Elasticsearch-文档查询
Elasticsearch-文档查询
数据准备
URI查询
-
简单查询
mall/goods/1
-
条件查询
GET mall/goods/_search?q=b_name: "如何"
Body复杂查询
-
匹配查询
GET mall/goods/_search { "query": { "match": { "b_name": "怎样征服美丽少女" } } }
-
查询的结果只展示指定的字段
GET mall/goods/_search { "query": { "match": { "b_name": "怎样征服美丽少女" } }, "_source": ["b_name","author"] }
-
排序
_score 不被计算, 因为它并没有用于排序
GET mall/goods/_search { "query": { "match": { "b_name": "怎样征服美丽少女" } }, "_source": ["b_name","author","price"], "sort": [ { "price": { "order": "desc" } } ] }
-
分页
GET mall/goods/_search { "query": { "match": { "b_name": "怎样征服美丽少女" } }, "_source": ["b_name","author","price"], "sort": [ { "price": { "order": "desc" } } ], "from": 0, "size": 2 }
-
布尔查询
bool:
must,should,must_not,filter-
必须同时匹配多个条件查询,相当于and
GET mall/goods/_search { "query": { "bool": { "must": [ { "match": { "b_name": "美丽少女" } }, { "match": { "price": "28" } } ] } } }
-
只要符合多个条件中的一个条件,相当于or
GET mall/goods/_search { "query": { "bool": { "should": [ { "match": { "b_name": "美丽少女" } }, { "match": { "price": "28" } } ] } } }
-
非查询,not
GET mall/goods/_search { "query": { "bool": { "must_not": [ { "match": { "b_name": "美丽少女" } }, { "match": { "price": "23" } } ] } } }``
-
过滤查询
gte:>=
lte:<=GET mall/goods/_search { "query": { "bool": { "must": [ { "match": { "b_name": "如何征服" } } ], "filter": { "range": { "price": { "gte": 10, "lte": 40 } } } } } }
-
快速模糊匹配查询(多个条件用空格隔开),相当于 or
GET mall/goods/_search { "query": { "match": { "b_name": "如何 骗" } }, "_source": ["b_name"] }
-
-
补充
-
多字段匹配查询:multi_match
most_fields:在多个字段中匹配的越多,排名越靠前 best_fields【默认】:能完全匹配的文档,排名越靠前 cross_fields:查询越分散,排名越靠前
-
query_string
-
短语搜索:match_phrase
参考:https://zhuanlan.zhihu.com/p/142641300match_phrase查询分析文本并根据分析的文本创建一个短语查询。 match_phrase会将检索关键词分词。 match_phrase的分词结果必须在被检索字段的分词中都包含,而且顺序必须相同,而且默认必须都是连续的。 比如搜索:"rock climbing",必须同时包含,并且两个单词紧挨着
-
-
组合查询案例
查询必须有
维
,必须有胶
或黑
;不能有生
;或有复