gpt4 book ai didi

elasticsearch - Elasticsearch DSL查询,用于基于多个文档中的字段值显示元素

转载 作者:行者123 更新时间:2023-12-03 02:32:28 24 4
gpt4 key购买 nike

假设表中的每一行都是一个单独的文档,如何在 Elasticsearch 中执行类似于以下内容的选择查询?

CREATE TABLE orders (
`orderid` varchar,
`status` varchar
);

insert into orders values('abc','PENDING');
insert into orders values('abc','SENT');
insert into orders values('xyz','PENDING');

select * from orders where status='PENDING' and orderid not in (select orderid from orders where status='SENT')

最佳答案

从SQL查询中,我了解到您需要状态为“PENDING”的所有记录。不知道为什么在这里需要AND条件来排除status =“SENT”为status =“pending”的订单将为您提供所需的行。

现在,进入 flex 查询,假设状态字段是关键字字段,则可以使用 bool(boolean) 查询来获取状态为“待处理”的文档
像这样-

{
"query": {
"bool": {
"must": [
{
"term":{
"status.keyword":"PENDING"
}
}
]
}
}
}

如果您需要查找所有状态为待定并已发送(“AND”条件)的所有文档,请在上述must子句中添加另一个术语查询。
如果需要对状态进行“或”运算,则将术语查询放在should子句中(在bool查询内部),并将minimum_should_match参数设置为1。
如果您需要给定时间范围内的所有值,请向其中添加带有时间范围查询的过滤器。
希望这可以帮助。

关于elasticsearch - Elasticsearch DSL查询,用于基于多个文档中的字段值显示元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59639841/

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