gpt4 book ai didi

elasticsearch - Elasticsearch:几个有序和有限查询的并集

转载 作者:行者123 更新时间:2023-12-03 00:15:45 31 4
gpt4 key购买 nike

我需要执行两个查询,获取这两个查询的并集,然后对合并的结果进行排序和限制。

这些查询只是术语查询:

{
"query": {
"term": { "a.field": "A" }
},
"sort": [
{ "another.field": {"order": "desc"}}
],
"size": 25
}

我查看了dis_max查询,但无法对查询进行排序和限制。

等效的SQL将是:
select * from (
(select * from my_table where a_field="A" order by another_field desc limit 25)
union
(select * from my_table where a_field="B" order by another_field desc limit 25)
) t order by yet_another_field limit 25;

该查询还有另外一部分,在Elasticsearch中比在关系数据库中要快得多。这就是为什么我希望看到它在elasticsearch中起作用。可能吗?

编辑

不能同时使用值“A”和“B”的字词查询。这是因为当按“another.field”排序时,没有“B”文档可以进入结果集,以便以后由“yet_another_field”进行排序。

最佳答案

您只需要使用terms query

{
"query": {
"terms": { "a.field": ["A","B"] }
},
"sort": [
{ "another.field": {"order": "desc"}}
],
"size": 25
}

查询是:来自文档的 25 results,其中 a.field is either A or B的值按 another.field降序排列

关于elasticsearch - Elasticsearch:几个有序和有限查询的并集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36053480/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com