うまく機能する2つのフィルターがあります:1.フレーズ「NA」に一致します
{
"query": {
"match": {
"region.keyword": {
"query": "NA",
"type": "phrase"
}
}
}
}
2. フィルタを取得して 0 ~ 7 以外のすべての時間を表示するスクリプト フィールドを使用します。
{
"script": {
"script": {
"inline": "boolean gte(Supplier s, def v) {return s.get() >= v} boolean lt(Supplier s, def v) {return s.get() < v}gte(() -> { doc['@timestamp'].date.hourOfDay }, params.gte) && lt(() -> { doc['@timestamp'].date.hourOfDay }, params.lt)",
"params": {
"gte": 0,
"lt": 7,
"value": ">=0 <7"
},
"lang": "painless"
}
}
}
これを 1 つのフィルターにグループ化して、「NA 時間は 0 から 7 の間ではない」ようにします。このようにして、地域と時間を変更し、追加のフィルターを適用できます。
また、フィルターを追加すると 1 つのフィールドにしか入れられないため、このようなカスタム フィルターを追加する方法もわかりません。