Elasticsearch各种文档操作

本文来记录下Elasticsearch各种文档操作

文章目录

  • 初始化文档数据
  • 查询所有文档
  • 匹配查询文档
  • 关键字精确查询文档
  • 多关键字精确查询文档
  • 字段匹配查询文档
  • 指定查询字段查询文档


初始化文档数据

在进行各种文档操作之前,我们先进行初始化文档数据的工作

Elasticsearch各种文档操作_第1张图片


查询所有文档

在 apifox 中,向 ES 服务器发 GET请求 :http://localhost:9200/person/_search,请求体内容为:

Elasticsearch各种文档操作_第2张图片

请求提参数解释

参数 解释
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,请求体内容为:

Elasticsearch各种文档操作_第3张图片

服务器响应结果如下:

Elasticsearch各种文档操作_第4张图片

由上图输出结果可知:根据匹配条件“张三”,把名称为张三1的也查询出来了,因为match 匹配类型查询,会把查询条件进行分词,然后进行查询,多个词条之间是 or 的关系


关键字精确查询文档

term 查询,精确的关键词匹配查询,不对查询条件进行分词

在 apifox 中,向 ES 服务器发 GET请求 :http://localhost:9200/person/_search,请求体内容为:

Elasticsearch各种文档操作_第5张图片

服务器响应结果如下:

Elasticsearch各种文档操作_第6张图片


多关键字精确查询文档

terms 查询和 term 查询一样,但它允许你指定多值进行匹配。如果这个字段包含了指定值中的任何一个值,那么这个文档满足条件,类似于 mysql 的 in。

在 apifox 中,向 ES 服务器发 GET请求 :http://localhost:9200/person/_search,请求体内容为:

Elasticsearch各种文档操作_第7张图片

服务器响应结果

Elasticsearch各种文档操作_第8张图片


字段匹配查询文档

multi_match 与 match 类似,不同的是它可以在多个字段中查询。

在 apifox 中,向 ES 服务器发 GET请求 :http://localhost:9200/person/_search,请求体内容为:

Elasticsearch各种文档操作_第9张图片

服务器响应结果

Elasticsearch各种文档操作_第10张图片


指定查询字段查询文档

默认情况下,Elasticsearch 在搜索的结果中,会把文档中保存在_source 的所有字段都返回。如果我们只想获取其中的部分字段,我们可以添加_source 的过滤。

在 apifox 中,向 ES 服务器发 GET请求 :http://localhost:9200/person/_search,请求体内容为:

Elasticsearch各种文档操作_第11张图片

服务器响应结果

Elasticsearch各种文档操作_第12张图片

你可能感兴趣的:(核心知识点,Elastic,Search,es,elasticsearch,分布式)