(7).布尔值查询 - not (must_not)
即 年龄不等于23岁的...
GET /jsxs/user/_search { "query": { "bool": { "must_not": [ { "match": { "age": "23" } } ] } } }
(8).布尔值查询 range- (filter)
范围值: gte即大于等于 。lte即小于等于
GET /jsxs/user/_search { "query": { "bool": { "must_not": [ { "match": { "name": "吉士先生2" } } ], "filter": { "range": { "age": { "gt": 8 } } } } } }
(9).多条件查询 (用空格隔开)
这里只能对同一个字段进行用空格隔开查询,也就是数组。
GET /jsxs/user/_search { "query": { "match": { "tags": "男 技术2" } } }
(10).单个值的精确查询 (keyword+term)
term
查询时直接通过倒排索引指定的词条进行精确
的查找。
- 关于分词:
term
,直接查询精确的。match
,会使用分词器解析!(先分析文档,然后再通过分析的文档进行查询)
- 两个类型
- text: 不会被分词器进行解析。
- keyword: 会被分词器解析。
1. 创建索引库
PUT testdb { "mappings": { "properties": { "name":{ "type": "text" }, "desc":{ "type": "keyword" } } } }
2.
插入两条数据
PUT testdb/_doc/2 { "name":"狂神说Java name1", "desc":"狂神说Java desc1" }
3. keyword 查询不会被分词器解析
GET _analyze { "analyzer": "keyword", "text": "狂神说Java name1" }
4. text会被分词器给解析,standard默认就是text
GET _analyze { "analyzer": "standard", "text": "狂神说Java name1" }
- 精确查找
keyword+term才能精确查找,否则不会精确查找.
GET testdb/_search { "query": { "term": { "desc": { "value": "狂神说Java desc1" } } } }
(11).多个值匹配精确查询
多个值的精确查询
GET testdb/_search { "query": { "bool": { "should": [ { "term": { "t1": { "value": "22" } } }, { "term": { "t1": { "value": "33" } } } ] } } }
(12).高亮查询
- 高亮查询
"highlight": { "fields": { "name":{} 给name字段进行操作 } }
GET jsxs/user/_search { "query": { "match": { "name": "吉士先生" } }, "highlight": { "fields": { "name":{} } } }
- 更改高亮样式 (自定义高亮样式)
"highlight": { "fields": { "name":{} } }
GET jsxs/user/_search { "query": { "match": { "name": "吉士先生" } }, "highlight": { "pre_tags": "<p class='key' style='color:red'>", "post_tags": "</p>", "fields": { "name":{} } } }