私はelasticsearchデータベースにデータを格納しており、数値の範囲でフィルタリングしてクエリを実行しようとしています。範囲フィルタと内部フィールドの不明な名前を持つElasticsearchのネストされた検索クエリ
これは私のデータベース内の文書の構造を最小化する:範囲内の1つの数は、少なくとも、「B」のサブフィールドのいずれかに存在する場合に
"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"のすべてのサブフィールドの名前がわからないことです。
私が思いついたクエリは次のとおりです。
POST /i/t/_search
{
"query": {
"query_string": {
"fields": ["a.b.*"],
"query": "number:[2 TO 4]"
}
}
}
クエリがエラーに上昇するだけでなく、何も結果を返しません。私は実際にはわかりませんが、どのような種類の検索クエリもそのようなタスクに最も適しています。クエリ文字列は、未知のフィールド名と範囲に参加できる場所で見つかった唯一の文字列なので、クエリ文字列を使用しました。