gpt4 book ai didi

elasticsearch - 在Elasticsearch的另一个 bool 查询中执行嵌套的 bool 查询

转载 作者:行者123 更新时间:2023-12-03 02:08:51 34 4
gpt4 key购买 nike

我想在另一个 bool(boolean) 查询中嵌套一个 bool(boolean) 查询,该 bool(boolean) 查询具有多个must / should来获得嵌套的AND / OR查询字符串,如以下查询中所示。

{
"query": {
"bool": {
"should": [
**// SHOULD BLOCK 1**
{
<should_query_1>
},
**// SHOULD BLOCK 2**
{
<should_query_2>
},
**// SHOULD BLOCK 3**
{
"bool": {
"must": [
<should_level_2_MUST_query_1>,
<should_level_2_MUST_query_2>,
{
"bool": {
"must": [
<should_level_3_MUST_query_1>,
<should_level_3_MUST_query_2>,
]
}
}
]
}
},
**// SHOULD BLOCK 4**
{
"bool": {
"must": [
<should_MUST_query_1>,
<should_MUST_query_2>
]
}
}
]
}
},
"size": 25,
"from": 0,
"fields": []
}

预期的行为是,我希望对“应该”块1、2、3、4进行“或”操作,并且在“应该阻止3”中,我希望对“Should_level_2_MUST_queries”进行“与”操作。

但是实际上,当我使用这种语法时,应该在第一级中对“3”和“4”块进行“与”运算,并与“1”和“2”块进行“或”运算。请帮我重新排列/重写此查询,以实现预期的性能。

提前致谢

最佳答案

AFAIK,elasticsearch没有和/或没有 bool(boolean) 代数中的水平。最后总是有一个层次。

因此,在您的查询中,您基本上会说“我需要3个必须查询”,因此这3个必须查询的组合结果将出现在最终响应中。

如果我正确理解它,那么为了达到预期的行为,您应该执行以下操作:

  • 将所有必需品转换为
  • 如果您需要AND并应放置那些"minumum_should_match:N"规则,其中N是整数

  • 指南:
  • How to use minumum should match?
  • 关于elasticsearch - 在Elasticsearch的另一个 bool 查询中执行嵌套的 bool 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20186441/

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