前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ES查询操作

ES查询操作

作者头像
Java廖志伟
发布2022-09-29 14:31:19
1K0
发布2022-09-29 14:31:19
举报
文章被收录于专栏:高级开发进阶高级开发进阶

10.查询操作

10.1 查询当前类型中的所有文档 _search

格式: GET /索引名称/类型/_search

举例: GET /es_db/_doc/_search

SQL: select * from student

10.2 条件查询, 如要查询age等于28岁的 _search?q=:**

格式: GET /索引名称/类型/_search?q=:**

举例: GET /es_db/_doc/_search?q=age:28

SQL: select * from student where age = 28

10.3 范围查询, 如要查询age在25至26岁之间的 _search?q=***[** TO **] 注意: TO 必须为大写

格式: GET /索引名称/类型/_search?q=***[25 TO 26]

举例: GET /es_db/_doc/_search?q=age[25 TO 26]

SQL: select * from student where age between 25 and 26

10.4 根据多个ID进行批量查询 _mget

格式: GET /索引名称/类型/_mget

举例: GET /es_db/_doc/_mget

{

"ids":["1","2"]

}

SQL: select * from student where id in (1,2)

10.5 查询年龄小于等于28岁的 :<=

格式: GET /索引名称/类型/_search?q=age:<=**

举例: GET /es_db/_doc/_search?q=age:<=28

SQL: select * from student where age <= 28

10.6 查询年龄大于28前的 :>

格式: GET /索引名称/类型/_search?q=age:>**

举例: GET /es_db/_doc/_search?q=age:>28

SQL: select * from student where age > 28

10.7 分页查询 from=&size=

格式: GET /索引名称/类型/_search?q=age[25 TO 26]&from=0&size=1

举例: GET /es_db/_doc/_search?q=age[25 TO 26]&from=0&size=1

SQL: select * from student where age between 25 and 26 limit 0, 1

10.8 对查询结果只输出某些字段 _source=字段,字段

格式: GET /索引名称/类型/_search?_source=字段,字段

举例: GET /es_db/_doc/_search?_source=name,age

SQL: select name,age from student

10.9 对查询结果排序 sort=字段:desc/asc

格式: GET /索引名称/类型/_search?sort=字段 desc

举例: GET /es_db/_doc/_search?sort=age:desc

SQL: select * from student order by age desc

11.文档批量操作

1.批量获取文档数据

批量获取文档数据是通过_mget的API来实现的

(1)在URL中不指定index和type

请求方式:GET 请求地址:_mget 功能说明 : 可以通过ID批量获取不同index和type的数据 请求参数: docs : 文档数组参数 _index : 指定index _type : 指定type _id : 指定id _source : 指定要查询的字段

代码语言:javascript
复制
GET _mget
{
"docs": [
{
"_index": "es_db",
"_type": "_doc",
"_id": 1
},
{
"_index": "es_db",
"_type": "_doc",
"_id": 2
}
]
}

响应结果如下:

代码语言:javascript
复制
{
  "docs" : [
    {
      "_index" : "es_db",
      "_type" : "_doc",
      "_id" : "1",
      "_version" : 3,
      "_seq_no" : 7,
      "_primary_term" : 1,
      "found" : true,
      "_source" : {
        "name" : "张三666",
        "sex" : 1,
        "age" : 25,
        "address" : "上海徐汇",
        "remark" : "java developer"
      }
    },
    {
      "_index" : "es_db",
      "_type" : "_doc",
      "_id" : "2",
      "_version" : 1,
      "_seq_no" : 1,
      "_primary_term" : 1,
      "found" : true,
      "_source" : {
        "name" : "李四",
        "sex" : 1,
        "age" : 28,
        "address" : "上海黄浦",
        "remark" : "java assistant"
      }
    }
  ]
}
(2)在URL中指定index

请求方式:GET 请求地址:/{{indexName}}/_mget 功能说明 : 可以通过ID批量获取不同index和type的数据 请求参数: docs : 文档数组参数 _index : 指定index _type : 指定type _id : 指定id _source : 指定要查询的字段

代码语言:javascript
复制
GET /es_db/_mget
{
"docs": [
{
"_type":"_doc",
"_id": 3
},
{
"_type":"_doc",
"_id": 4
}
]
}
(3)在URL中指定index和type

请求方式:GET 请求地址:/{{indexName}}/{{typeName}}/_mget 功能说明 : 可以通过ID批量获取不同index和type的数据 请求参数: docs : 文档数组参数 _index : 指定index _type : 指定type _id : 指定id _source : 指定要查询的字段

代码语言:javascript
复制
GET /es_db/_doc/_mget
{
"docs": [
{
"_id": 1
},
{
"_id": 2
}
]
}

2.批量操作文档数据

批量对文档进行写操作是通过_bulk的API来实现的 请求方式:POST 请求地址:_bulk 请求参数:通过_bulk操作文档,一般至少有两行参数(或偶数行参数) 第一行参数为指定操作的类型及操作的对象(index,type和id) 第二行参数才是操作的数据 参数类似于:

代码语言:javascript
复制
{"actionName":{"_index":"indexName", "_type":"typeName","_id":"id"}}
{"field1":"value1", "field2":"value2"}

actionName:表示操作类型,主要有create,index,delete和update

(1)批量创建文档create
代码语言:javascript
复制
POST _bulk
{"create":{"_index":"article", "_type":"_doc", "_id":3}}
{"id":3,"title":"老师1","content":"666","tags":["java", "面向对象"],"create_time":1554015482530}
{"create":{"_index":"article", "_type":"_doc", "_id":4}}
{"id":4,"title":"老师2","content":"NB","tags":["java", "面向对象"],"create_time":1554015482530}
(2)普通创建或全量替换index
代码语言:javascript
复制
POST _bulk
{"index":{"_index":"article", "_type":"_doc", "_id":3}}
{"id":3,"title":"老师(一)","content":"666","tags":["java", "面向对象"],"create_time":1554015482530}
{"index":{"_index":"article", "_type":"_doc", "_id":4}}
{"id":4,"title":"老师(二)","content":"NB","tags":["java", "面向对象"],"create_time":1554015482530}

如果原文档不存在,则是创建 如果原文档存在,则是替换(全量修改原文档)

(3)批量删除delete
代码语言:javascript
复制
POST _bulk
{"delete":{"_index":"article", "_type":"_doc", "_id":3}}
{"delete":{"_index":"article", "_type":"_doc", "_id":4}}
(4)批量修改update
代码语言:javascript
复制
POST _bulk
{"update":{"_index":"article", "_type":"_doc", "_id":3}}
{"doc":{"title":"ES大法必修内功"}}
{"update":{"_index":"article", "_type":"_doc", "_id":4}}
{"doc":{"create_time":1554018421008}}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-02-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 10.查询操作
    • 10.1 查询当前类型中的所有文档 _search
      • 10.2 条件查询, 如要查询age等于28岁的 _search?q=:**
        • 10.3 范围查询, 如要查询age在25至26岁之间的 _search?q=***[** TO **] 注意: TO 必须为大写
          • 10.4 根据多个ID进行批量查询 _mget
            • 10.5 查询年龄小于等于28岁的 :<=
              • 10.6 查询年龄大于28前的 :>
                • 10.7 分页查询 from=&size=
                  • 10.8 对查询结果只输出某些字段 _source=字段,字段
                    • 10.9 对查询结果排序 sort=字段:desc/asc
                    • 11.文档批量操作
                      • 1.批量获取文档数据
                        • (1)在URL中不指定index和type
                        • (2)在URL中指定index
                        • (3)在URL中指定index和type
                      • 2.批量操作文档数据
                        • (1)批量创建文档create
                        • (2)普通创建或全量替换index
                        • (3)批量删除delete
                        • (4)批量修改update
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档