我需要对多字段数据进行 range 查询。但是,每个字段都不应独立对待。例如,我有以下顺序:
(20, 20) > (10, 1) > (9, 9) > (9, 5) > (7, 10) > (5, 20)
问题Query in elasticsearch with multiple ranges on multiple dates和Elasticsearch date range query using two fields是不相关,因为在我想查找所有文档的情况下 gt (7, 10)
我将仅获得(20, 20)
并丢失所有其他文档。
对于两字段情况,我可以编写以下查询:
# target query
GET /test/_search?pretty
{
"query": {
"bool": {
"should": [
{
"range": {
"field1": {
"gt": 7
}
}
},
{
"bool": {
"must": [
{
"term": {
"field1": 7
}
},
{
"range": {
"run": {
"field2": 10
}
}
}
]
}
}
]
}
}
}
它看起来已经很笨拙,但是当需要更多字段时就变得不可能。
排序查询具有一种表格,可以根据需要对此类数据进行排序:
GET /test/_search?pretty
{
"sort": [
{ "field1": { "order": "desc" }},
{ "field2": { "order": "desc" }}
]
}
所以问题是:
谢谢您的帮助!