Kibanaでデータ検索する機会があったので、備忘録として残します。
フィールド値を使って計算、検索する方法です。
Kibana Discoverで指定
Discoverで指定する場合は、「+Add Filter」で下記のDSLを指定することで検索できます。
Kibana コンソールで指定
親の年齢(parentage)と子の年齢(childage)の差が30歳以上であるデータを検索する場合に、Kibana コンソールで指定する方法です。
計算をする場合は、Script queryを使います。
GET /indexA/_search
{
"query": {
"bool": {
"filter": {
"script": {
"lang": "painless",
"source": "doc[parentage].value - doc[childage].value" >= 30"
}
}
}
}
}
親の年齢(parentage)と子の年齢(childage)の差が30歳以上かつ40歳未満であるデータを検索する場合は次のように書きます。
GET /indexA/_search
{
"query": {
"bool": {
"filter": {
"script": {
"lang": "painless",
"source": "doc[parentage].value - doc[childage].value" >= 30 && doc[parentage].value - doc[childage].value" < 40"
}
}
}
}
}
scriptを使って複雑な計算や処理を記載することができます。
Kibanaマニュアル(英語)
Script query | Elasticsearch Guide [8.15] | Elastic