这一个章节节我们要来介绍复合查询,当单一的查询子句无法完成需求时,为了应付这种高级查询需求,所以就产生这种能够把多个查询子句组合起来的语法,就称为复合查询。
复合查询就是指可以对多个查询子句进行结合查询资料,并且计算资料相关得分。bool query
就是将这些结果和得分整理後并回传。
bool query用bool操作,包含的子句类型如下:
must
- 算分
- 回传结果必需满足所有符合的子句条件
- 类似SQL中的AND
filter
- 不算分
- 回传结果必需满足所有符合的子句条件
- 用法和must相似
should
- 算分
- 满足这些条件中的任何条件都会增加评分_score,不满足也不影响回传结果
如果语法中有
must
语句,则should
语句就没有匹配的要求。
如果语法中没有must
语句,最少需要匹配一条should
语句。
must_not
- 不算分
- 回传结果必需不满足must_not条件
- 类似SQL中的NOT
范例一:
{
"bool": {
"must": {
"match": {
"title": "elasticsearch"
}
},
"should": [
{
"match": {
"tag": "13th"
}
},
{
"range": {
"date": {
"gte": "2014-01-01"
}
}
}
]
}
}
title
栏位符合elasticsearch
的所有资料
tag
栏位有再符合13th
的资料,分数权重会在增加
date
栏位有大於等於2014-01-01
的资料,分数权重会在增加
范例二:
{
"bool": {
"must": {
"match": {
"title": "elasticsearch"
}
},
"should": [
{
"match": {
"tag": "13th"
}
}
],
"filter": {
"range": {
"date": {
"gte": "2014-01-01"
}
}
}
}
}
range查询己经从
should
语句转移到filter
语句,表示已转换成不评分的查询,将不会再响相关分数计算。
<<: Day 04:金鱼记忆力太短暂,交给外挂记吧!autosuggestions 与 substring-search
根据机密性,应将要求国家安全信息的第12356号行政命令分类为“最高机密”,“机密”或“机密”只是对...
Google 的文件中,目前写了 33 种不同的结构化资料功能,但有 3 种是实验中,以及有 2 种...
近期面试掀起了一波考演算法的风气,就好像回到大学指考那样,老师说这题会考一定要记起来,因此掀起了一...
在昨天将 index 成功推上 Github 後,今天该让他有点东西了。 打开 VSCODE 後 按...
因为是「最早」,所以这篇讲的东西以经被大家(包含Google自己)用新工具给取代、或是直接给丢到垃圾...