本文来记录下Elasticsearch各种文档操作
文章目录
- 初始化文档数据
- 查询所有文档
- 匹配查询文档
- 关键字精确查询文档
- 多关键字精确查询文档
- 字段匹配查询文档
- 指定查询字段查询文档
- 过滤字段查询文档
- 概述
- 指定想要显示的字段示例
- 指定不想要显示的字段示例
- 组合查询文档
- 范围查询文档
- 概述
- 使用实例
- 本文小结
初始化文档数据
在进行各种文档操作之前,我们先进行初始化文档数据的工作
查询所有文档
在 apifox 中,向 ES 服务器发 GET请求 :http://localhost:9200/person/_search,请求体内容为:
请求提参数解释
参数 | 解释 |
---|---|
query | 代表一个查询对象,里面可以有不同的查询属性 |
match_all | 查询类型,例如:match_all(代表查询所有), match,term , range 等等 |
match_all后面的{查询条件} | 查询条件会根据类型的不同,写法也有差异 |
服务器响应结果
{
"took": 2,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 4,
"relation": "eq"
},
"max_score": 1.0,
"hits": [
{
"_index": "person",
"_type": "_doc",
"_id": "Rc9VEY0BBLem2BEm_dvu",
"_score": 1.0,
"_source": {
"name": "张三",
"age": 22,
"sex": "男"
}
},
{
"_index": "person",
"_type": "_doc",
"_id": "Rs_VFI0BBLem2BEmQNuK",
"_score": 1.0,
"_source": {
"name": "张三1",
"age": 22,
"sex": "男"
}
},
{
"_index": "person",
"_type": "_doc",
"_id": "R8_WFI0BBLem2BEmO9tB",
"_score": 1.0,
"_source": {
"name": "李四",
"age": 23,
"sex": "女"
}
},
{
"_index": "person",
"_type": "_doc",
"_id": "SM_WFI0BBLem2BEmrtsU",
"_score": 1.0,
"_source": {
"name": "李四1",
"age": 24,
"sex": "女"
}
}
]
}
}
服务器响应结果解释
{
"took"【查询花费时间,单位毫秒】: 2,
"timed_out"【是否超时】: false,
"_shards": 【分片信息】{
"total"【总数】: 1,
"successful"【成功】: 1,
"skipped"【忽略】: 0,
"failed"【失败】: 0
},
"hits"【搜索命中结果】: {
"total"【搜索条件匹配的文档总数】: {
"value"【总命中计数的值】: 4,
"relation"【计数规则】: "eq"
# eq 表示计数准确, gte 表示计数不准确
},
"max_score"【匹配度分值】: 1.0,
"hits"【命中结果集合】: [
-----------------------------
]
}
}
匹配查询文档
match 匹配类型查询,会把查询条件进行分词,然后进行查询,多个词条之间是 or 的关系
在 apifox 中,向 ES 服务器发 GET请求 :http://localhost:9200/person/_search,请求体内容为:
服务器响应结果如下:
由上图输出结果可知:根据匹配条件“张三”,把名称为张三1的也查询出来了,因为match 匹配类型查询,会把查询条件进行分词,然后进行查询,多个词条之间是 or 的关系
关键字精确查询文档
term 查询,精确的关键词匹配查询,不对查询条件进行分词
在 apifox 中,向 ES 服务器发 GET请求 :http://localhost:9200/person/_search,请求体内容为:
服务器响应结果如下:
多关键字精确查询文档
terms 查询和 term 查询一样,但它允许你指定多值进行匹配。如果这个字段包含了指定值中的任何一个值,那么这个文档满足条件,类似于 mysql 的 in。
在 apifox 中,向 ES 服务器发 GET请求 :http://localhost:9200/person/_search,请求体内容为:
服务器响应结果
字段匹配查询文档
multi_match 与 match 类似,不同的是它可以在多个字段中查询。
在 apifox 中,向 ES 服务器发 GET请求 :http://localhost:9200/person/_search,请求体内容为:
服务器响应结果
指定查询字段查询文档
默认情况下,Elasticsearch 在搜索的结果中,会把文档中保存在_source 的所有字段都返回。如果我们只想获取其中的部分字段,我们可以添加_source 的过滤。
在 apifox 中,向 ES 服务器发 GET请求 :http://localhost:9200/person/_search,请求体内容为:
服务器响应结果
过滤字段查询文档
概述
默认情况下,Elasticsearch 在搜索的结果中,会把文档中保存在_source 的所有字段都返回。如果我们只想获取其中的部分字段,我们可以添加_source 的过滤。
- includes:来指定想要显示的字段
- excludes:来指定不想要显示的字段
指定想要显示的字段示例
在 apifox 中,向 ES 服务器发 GET请求 :http://localhost:9200/person/_search,请求体内容为:
服务器响应结果
指定不想要显示的字段示例
在 apifox 中,向 ES 服务器发 GET请求 :http://localhost:9200/person/_search,请求体内容为:
服务器响应结果
组合查询文档
bool把各种其它查询通过must(必须 )、must_not(必须不)、should(应该)的方式进行组合。
在 apifox 中,向 ES 服务器发 GET请求 :http://localhost:9200/person/_search,请求体内容为:
服务器响应结果
范围查询文档
概述
range 查询找出那些落在指定区间内的数字或者时间。range 查询允许以下字符:
操作符 | 说明 |
---|---|
gt | 大于> |
gte | 大于等于>= |
lt | 小于< |
lte | 小于等于<= |
使用实例
在 apifox 中,向 ES 服务器发 GET请求 :http://localhost:9200/person/_search,请求体内容为:
服务器响应结果
本文小结
本文记录了一些Elasticsearch文档操作