【发布时间】:2020-10-22 03:02:13
【问题描述】:
我有一些数据正在尝试按非常特定的顺序排序。
我在这里查看了一些关于 SO 的问题,Elasticsearch sort on multiple queries 非常有帮助。据我所知,我正在以正确的顺序取回数据,但它并不总是相同的数据,而且对于查询返回的内容似乎非常随机。
我的问题是,如何让我的数据正确排序并每次都得到预期的数据?
示例数据
[
{
id: 00,
...
current_outage: {
device_id: 00,
....
},
forecasted_outages: [
{
device_id: 00
}
]
},
{
id: 01,
...
current_outage: {
device_id: 01,
....
},
forecasted_outages: []
},
{
id: 02,
...
current_outage: null,
forecasted_outages: [
{
device_id: 02
}
]
},
{
id: 03,
...
current_outage: null,
forecasted_outages: []
},
]
当前查询
bool: {
should: [
{
constant_score: {
boost: 6,
filter: {
nested: {
path: 'current_outage',
query: {
exists: {
field: 'current_outage'
}
}
}
}
}
},
{
nested: {
path: 'forecasted_outages',
query: {
exists: {
field: 'forecasted_outages'
}
}
}
}
]
}
重申一下,上面的查询以我期望的格式/排序方法返回数据,但它不会每次都返回我期望的数据。据我所知,返回的数据非常随机。
排序标准:
- 第一个:同时包含
current_outage和一个或多个forecasted_outages的数据 - 第二个:只有
current_outage的数据 - 第三:只有
forecasted_outages的数据
编辑
根据用户的不同,返回的数据可以是零到数千个结果。用户可以选择对数据进行分页或返回所有相关数据。
编辑 2
返回的数据将是从 0 到 1,000 次点击。
【问题讨论】:
-
总点击数是多少?
-
我正要将此添加到问题中,但总点击量可能是零到数千个结果。数据通常会被分页,我已经考虑过但没有包括在示例中,但也可以选择返回所有用户数据。
标签: elasticsearch