0

データをelasticsearchデータベースに保存していて、数値の範囲でフィルタリングしてクエリを実行しようとしています。

これは、データベース内のドキュメントの構造を最小化したものです。

"a": {
    "b": {
        "x": [1, 2, 3, 4], // note: x, y and z are not compulsory
        "y": [2, 3, 4], // some documents can have only x or z or maybe x and z etc.
        "z": [5, 6]
    }
}

ここで、「b」のいずれかのサブフィールドに 2 ~ 4 の範囲の数字が少なくとも 1 つ含まれるすべてのドキュメントをクエリで返すようにします。ここで重要なことは、「」のすべてのサブフィールドの名前がわからないことです。 b」。

私が思いついたクエリは次のとおりです。

POST /i/t/_search
{
    "query": {
        "query_string": {
            "fields": ["a.b.*"],
            "query": "number:[2 TO 4]"
        }          
    }
}

クエリはエラーを発生させませんが、結果も返しません。そのようなタスクにどの種類の検索クエリが最も適しているかさえ、私にはよくわかりません。不明なフィールド名と範囲を結合できる唯一のクエリ文字列が見つかったため、クエリ文字列のみを使用しました。

4

1 に答える 1