6.关于文档的基本操作(重点)

1.添加数据

PUT /zjzaki/user/1
{
	"name": "zjzaki",
	"age": 5,
	"desc": "一顿操作猛如虎,一看工资2500",
	"tags": ["技术宅","温暖","直男"]
}

image-20230228113124200

2.获取数据

GET zjzaki/user/1

image-20230228113619755

3.更新数据

PUT /zjzaki/user/3
{
	"name": "张三222",
	"age": 20,
	"desc": "法外狂徒",
	"tags": ["交友","旅游"]
}

image-20230228113723500

Post _update, 推荐使用这种方式

PUT /zjzaki/user/3/_update
{
	"doc": {
		"name": "法外狂徒张三"
	}
}

image-20230228114212144

4.简单的搜索

GET zjzaki/user/1

4.1.简单的条件查询

GET zjzaki/user/_search?q=name:zjzaki

image-20230228114542548

4.2.复杂操作 select(排序,分页,高亮,模糊查询,精准查询!)

4.2.1._source 结果过滤

GET zjzaki/user/_search
{
	"query": {
		"match": {
			"name": "李"
		}
	},
	"_source": ["name","desc"]
}

image-20230228122319494

我们使用java操作es,所有的方法和对象就是这里面的key

4.2.2.sort 排序

GET zjzaki/user/_search
{
	"query": {
		"match": {
			"name": "李"
		}
	},
	"sort": [
		{
			"age": {
				"order": "desc"
			}
		}
	]
}

image-20230228122555399

4.2.3.分页查询

GET zjzaki/user/_search
{
	"query": {
		"match": {
			"name": "李"
		}
	},
	"sort": [
		{
			"age": {
				"order": "desc"
			}
		}
	],
	"from": 0,
	"size": 20
}

image-20230228123021847

4.2.4.布尔值查询

must (and) 所有的条件都要符合

GET zjzkai/user/_search
{
	"query": {
		"bool": {
			"must": [
				{
					"match": {
						"name": "狂胜说"
					}
				},
				{
					"match": {
						"age": 3
					}
				}
			]
		}
	}
}

image-20230228123355546

should (or)

must_not 不是

filter 过滤

GET zjzaki/user/_search
{
	"query": {
		"bool": {
			"must": [
				{
					"match": {
						"name": "zjzaki"
					}
				}
			],
			"fillter": {
				"range": {
					"age": {
						"lt": 10
					}
				}
			}
		}
	}
}
  • gt 大于
  • gte 大于等于
  • lt 小于
  • lte 小于等于

image-20230228123947123

term 查询是直接通过倒排索引指定的词条进行查询的

关于分词:

term, 直接查询精确的值

match,会使用分词器解析(先分析文档,然后再通过分析的文档进行查询)

两个类型 text keyword

GET _analyze
{
	"analyzer": "keyword",
	"text": "zjzaki Java home"
}
GET _analyze
{
	"analyzer": "standard",
	"text": "zjzaki Java home"
}

image-20230228214624489

高亮查询

GET zjzaki/user/_search
{
	"query": {
		"match": {
			"name": "zjzaki"
		}
	},
	"highlight": {
		"fields": {
			"name": {}
		}
	}
}

image-20230228215652113

自定义搜索高亮条件

GET zjzaki/user/_search
{
	"query": {
		"match": {
			"name": "zjzaki"
		}
	},
	"highlight": {
		"pre_tags": "<p class='key' style='color:red'>",
		"post_tags": "</p>",
		"fields": {
			"name": {}
		}
	}
}

image-20230228220150057