本文来记录下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文档操作














![[VS2022代码推送到gitee远程仓库]](https://img-blog.csdnimg.cn/direct/4bb1ee130a354e3992fb5f98bf7311e1.png)




