本文来记录下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,请求体内容为:

服务器响应结果