Day09 Kibana - Query DSL 复合查询

这一个章节节我们要来介绍复合查询,当单一的查询子句无法完成需求时,为了应付这种高级查询需求,所以就产生这种能够把多个查询子句组合起来的语法,就称为复合查询。

复合查询

复合查询就是指可以对多个查询子句进行结合查询资料,并且计算资料相关得分。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语句,表示已转换成不评分的查询,将不会再响相关分数计算。

Reference


<<:  Day 04:金鱼记忆力太短暂,交给外挂记吧!autosuggestions 与 substring-search

>>:  Day 2 Odoo开发环境与元件介绍

NIST风险管理框架(RMF)-系统分类

根据机密性,应将要求国家安全信息的第12356号行政命令分类为“最高机密”,“机密”或“机密”只是对...

从 IT 技术面细说 Search Console 的 27 组数字 KPI (17) :结构化资料(收录)

Google 的文件中,目前写了 33 种不同的结构化资料功能,但有 3 种是实验中,以及有 2 种...

Day1: 开始学习演算法和资料结构的契机

近期面试掀起了一波考演算法的风气,就好像回到大学指考那样,老师说这题会考一定要记起来,因此掀起了一...

DAY 5 html 基础网页

在昨天将 index 成功推上 Github 後,今天该让他有点东西了。 打开 VSCODE 後 按...

最早的Android开发理念...

因为是「最早」,所以这篇讲的东西以经被大家(包含Google自己)用新工具给取代、或是直接给丢到垃圾...