0%

ElasticSearch 學習紀錄 Part8 - boolean query

前言

這篇文章是出自於線上課程 Complete Guide to Elasticsearch 的所記錄的筆記。

這一篇文章要來介紹 boolean query 的種類及特性。

boolean query

boolean query 使用的時機點在於,當有多個條件要判斷的時候。其中,又可以分成四種

  1. must: 條件必須存在
  2. should: 條件存在可有可無
  3. filter: 條件必須存在,但不影響 _score
  4. must_not: 條件必須存在

使用的時機點在於,當有多個條件要拿來判斷的時候。

使用 match 或 should 匹配成功時都可以增加分數 “_score”

named query

透過 named query 可以知道有哪些 boolean query 是有成功被使用到的,也就是說可以進一步拿來 DEBUG

E.g.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
GET /_search
{
"query": {
"bool": {
"should": [
{ "match": { "name.first": { "query": "shay", "_name": "first" } } },
{ "match": { "name.last": { "query": "banon", "_name": "last" } } }
],
"filter": {
"terms": {
"name.last": [ "banon", "kimchy" ],
"_name": "test"
}
}
}
}
}

match_queries 的欄位中,會出現被使用到的欄位的 _name

1
2
3
4
5
6
{
...省略
match_queries: [
"test"
]
}

Reference

  1. Complete Guide to Elasticsearch