我将数据存储在弹性搜索数据库中,并尝试查询它,按数字范围过滤。
这是我数据库中文档的最小化结构:
"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 之间的数字。重要的是,我不知道“”的所有子字段的名称乙”。
我提出的查询是:
POST /i/t/_search
{
"query": {
"query_string": {
"fields": ["a.b.*"],
"query": "number:[2 TO 4]"
}
}
}
查询不会出现错误,但也不会返回任何结果。我什至不确定,哪种搜索查询最适合此类任务。我只使用了查询字符串,因为它是我发现的唯一可以加入未知字段名称和范围的字符串。