学习总结录 学习总结录
首页
归档
分类
标签
  • Java基础
  • Java集合
  • MySQL
  • Redis
  • JVM
  • 多线程
  • 计算机网络
  • 操作系统
  • Spring
  • Kafka
  • Elasticsearch
  • Python
  • 面试专题
  • 案例实践
  • 工具使用
  • 项目搭建
  • 服务治理
  • ORM框架
  • 分布式组件
  • MiniSpring
  • 设计模式
  • 算法思想
  • 编码规范
友链
关于
GitHub (opens new window)
首页
归档
分类
标签
  • Java基础
  • Java集合
  • MySQL
  • Redis
  • JVM
  • 多线程
  • 计算机网络
  • 操作系统
  • Spring
  • Kafka
  • Elasticsearch
  • Python
  • 面试专题
  • 案例实践
  • 工具使用
  • 项目搭建
  • 服务治理
  • ORM框架
  • 分布式组件
  • MiniSpring
  • 设计模式
  • 算法思想
  • 编码规范
友链
关于
GitHub (opens new window)
  • Java基础

  • Java集合

  • MySQL

  • Redis

  • JVM

  • 多线程

  • 计算机网络

  • Spring

  • Kafka

  • Elasticsearch

    • ElasticSearch基本概念
    • 文档基本操作
      • 一、新增文档
      • 二、查看文档
        • 1、主键查询
        • 2、全查询
      • 三、修改文档
        • 1、全部修改
        • 2、部分修改
      • 四、删除文档
      • 五、复杂查询
        • 1、复杂查询格式
        • 2、模糊匹配
        • 3、精确匹配
        • 4、排序
        • 5、分页
        • 6、多条件
        • 7、范围查询
      • 参考
    • 倒排索引
    • 分词器
    • Mapping和常见字段类型
    • Index Template&Dynamic Template
    • Elasticsearch聚合分析简介
    • 基于词项和基于全文的搜索
    • 结构化搜索
    • 搜索的相关性算分
    • 单字符串多字段查询
    • SearchTemplate 和 Index Alias 查询
    • Function Score Query 优化算分
    • Term&Phrase Suggester
    • 自动补全于基于上下文的提示
  • Python

  • 面试专题

  • 知识库
  • Elasticsearch
旭日
2023-05-21
目录

文档基本操作

# 一、新增文档

请求格式如下:

POST shopping/_doc/
{
    "title":"小米手机",
    "category":"小米",
    "images":"photo.jpg",
    "price":3999.00
}

服务端返回结果:

{
    "_index": "shopping", // 索引
    "_type": "_doc", // 类型-文档
    "_id": "lKTdI4gBGQlN61UNgHvL", // 唯一标识,随机生成,类似MySQL的主键
    "_version": 1,// 版本,表示数据修改了多少次
    "result": "created",// 结果
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 0,
    "_primary_term": 1
}

如果要指定唯一标识

POST shopping/_doc/3
{
    "title":"vivo手机plus",
    "category":"vivo",
    "images":"photo.jpg",
    "price": 2600.00
}

# 二、查看文档

# 1、主键查询

如果想要根据主键对单个文档进行查询

# 根据主键查询一个文档
GET shopping/_doc/2

服务端返回格式:

{
  "_index" : "shopping", // 索引
  "_type" : "_doc", // 类型
  "_id" : "2", // 主键
  "_version" : 3, // 版本,表示修改了几个
  "_seq_no" : 3,
  "_primary_term" : 1,
  "found" : true,
  "_source" : { // 数据
    "title" : "华为手机plus",
    "category" : "华为",
    "images" : "photo.jpg",
    "price" : 3000.0
  }
}

# 2、全查询

如果想要查询一个索引下的所有文档:

# 查询索引下的所有文档
GET shopping/_search

# 三、修改文档

# 1、全部修改

全部修改和新增操作一样,只需要把请求内容更换一下即可:

POST shopping/_doc/2
{
    "title" : "华为手机plus",
    "category" : "华为plus",
    "images" : "photo.jpg",
    "price" : 3000.0
}

服务端返回:

{
  "_index" : "shopping",
  "_type" : "_doc",
  "_id" : "2",
  "_version" : 4,
  "result" : "updated",// 表示被修改
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 7,
  "_primary_term" : 1
}

# 2、部分修改

请求体格式:

POST shopping/_update/2
{
  "doc": {
    "price" : 6666
  }
}

服务端返回:

{
  "_index" : "shopping",
  "_type" : "_doc",
  "_id" : "2",
  "_version" : 7,
  "result" : "updated",// 表示被修改
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 10,
  "_primary_term" : 1
}

# 四、删除文档

请求体格式如下:

# 文档删除
DELETE shopping/_doc/100

服务端返回:

{
  "_index" : "shopping",
  "_type" : "_doc",
  "_id" : "100",
  "_version" : 2,
  "result" : "deleted", //表示被删除了
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 6,
  "_primary_term" : 1
}

文档的删除只是逻辑删除。

# 五、复杂查询

# 1、复杂查询格式

基本格式

GET /{索引名}/_search
{
        "from" : 0,  // 返回搜索结果的开始位置
        "size" : 10, // 分页大小,一次返回多少数据
        "_source" :[ ...需要返回的字段数组... ],
        "query" : { ...query子句... },
        "aggs" : { ..aggs子句..  },
        "sort" : { ..sort子句..  }
}

  • query子句主要用来编写类似SQL的Where语句,支持布尔查询(and/or)、IN、全文搜索、模糊匹配、范围查询(大于小于)。

  • aggs子句,主要用来编写统计分析语句,类似SQL的group by语句

  • sort子句,用来设置排序条件,类似SQL的order by语

查询返回格式

{
  "took" : 5, // 查询消耗时间,单位毫秒 
  "timed_out" : false, // 查询是否超时
  "_shards" : { // 本次查询参与的ES分片信息,查询中参与分片的总数,以及这些分片成功了多少个失败了多少个
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : { // hits字段包含我们搜索匹配的结果
    "total" : { // 匹配到的文档总数
      "value" : 1, // 找到1个文档
      "relation" : "eq"
    },
    "max_score" : 1.0, // 匹配到的最大分值
    "hits" : [ 
         // 这里就是我们具体的搜索结果,是一个JSON文档数组
    ]
  }
}

# 2、模糊匹配

# 模糊匹配
GET shopping/_search
{
  "query": {
    "match": {
      "title": "手机"
    }
  }
}

# 3、精确匹配

GET shopping/_search
{
  "query": {
    "term": {
      "category": {
        "value": "小米"
      }
    }
  }
}

# 4、排序

# 排序
GET shopping/_search
{
  "sort": [
    {
      "price": {
        "order": "desc"
      }
    }
  ]
}

# 5、分页

# 分页
GET shopping/_search
{
  "from": 0, 
  "size": 10
}

# 6、多条件

# 多条件
GET shopping/_search
{
    "query":{
        "bool":{
            "must":[{
                "match":{
                    "category":"小米"
                }
            },{
                "match":{
                    "price":3999.00
                }
            }]
        }
    }
}

# 多条件
GET shopping/_search
{
    "query":{
        "bool":{
            "should":[{
                "match":{
                    "category":"小米"
                }
            },{
                "match":{
                    "category":"华为"
                }
            }]
        }
    }
}
  • must:&&
  • should: ||

# 7、范围查询

# 范围查询
GET /shopping/_search
{
  "query": {
    "range": {
      "price": {
        "gte": 2000, 
        "lte": 3000
      }
    }
  }
}
  • gt - 大于 ( > )

  • gte - 大于且等于 ( >= )

  • lt - 小于 ( < )

  • lte - 小于且等于 ( <= )

# 参考

Elasticsearch 核心技术与实战 (opens new window)

#Elasticsearch
上次更新: 2024/06/29, 15:13:44
ElasticSearch基本概念
倒排索引

← ElasticSearch基本概念 倒排索引→

最近更新
01
基础概念
10-31
02
Pytorch
10-30
03
Numpy
10-30
更多文章>
Theme by Vdoing | Copyright © 2021-2024 旭日 | 蜀ICP备2021000788号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式