本文来记录下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,请求体内容为:
服务器响应结果