Elasticsearch で検索するときに、カスタム スコアリング スクリプトにフィールドが存在するかどうかを確認したいと思います。
この検索は次のように機能します。
{
"query": {
"custom_score": {
"script": "((doc['region'].value == '1') ? 1 : 0)",
"query": {
"constant_score": {
"filter": {
"and": [
{
"term": {
"id": "100"
}
}
]
}
}
}
}
},
"size": 1
}
地域フィールドの値が 1 の場合、結果は 1 とスコア付けされます。
ただし、このクエリは機能しません。ドキュメントに地域フィールドが存在しない場合、ドキュメントのスコアは 1 になりません。
{
"query": {
"custom_score": {
"script": "((doc['region'].value == null) ? 1 : 0)",
"query": {
"constant_score": {
"filter": {
"and": [
{
"term": {
"id": "100"
}
}
]
}
}
}
}
},
"size": 1
}
スクリプトで欠損値を確認するにはどうすればよいですか?