文章目录
内容太多了,拆出来些。
查询结构
bool是什么意思
must # 所有条件都要满足,相当于and
should # 满足任一条件即可,相当于or
must_not # 全部条件都不能满足,相当于非
filter # filter是数组,多个条件的默认关系是and,如果要实现or或非,在里面再内嵌should或者must_not
must、should、must_not都参与打分,因为一般与match搭配,会拆分查询,所以拿到的结果需要打分。
filter不参与打分,因为是精准查询,没必要打分了。
bool通用模板
json
{
"query": {
"bool": {
"must": [
// 全文检索、match分词,要相关性排序放这里
{"match":{"title":"小米耳机"}}
],
"filter": [
// 精准条件、状态、价格区间一律放这
{"term":{"sale":1}},
{"range":{"price":{"gte":100,"lte":500}}}
]
}
}
}
一级标签有哪些?
例如query是一级标签,还有哪些呢?
json
{
"query": {
"match": { "title": "金庸" }
},
"aggs": {
"categories": {
"terms": { "field": "category.keyword" }
}
},
"sort": [
{ "publish_date": { "order": "desc" } }
],
"from": 0,
"size": 10,
"_source": ["title", "author", "price"],
"highlight": {
"fields": { "title": {} }
}
}
看这个也行:
json
{
"query": {},
"aggs": {},
"sort": [],
"from": 0,
"size": 10,
"_source": [],
"highlight": {},
"suggest": {},
"collapse": {}
}