gpt4 book ai didi

elasticsearch - 如何在术语查询中模拟多个字段

转载 作者:行者123 更新时间:2023-11-29 02:47:18 24 4
gpt4 key购买 nike

我已经编写了一些代码 (java/spring),允许用户选择复选框,然后构建一个 elasticSearch 查询。到目前为止,这一直运作良好,因为要求不同类别的术语应该是 AND 查询,因此可以循环遍历分层选择框来构建术语匹配(OR 查询),然后将它们组合起来并构建一个沿着这些行的 bool 术语查询

{
"bool" : {
"must" : [ {
"terms" : {
"field1" : [ "term1", "term2" ]
}
}, {
"terms" : {
"field2" : [ "term3" ]
}
} ]
}

有一个新的要求来制作一些顶级框或查询所以在这些情况下我需要一些类似

的东西
{
"query": {
"bool" : {
"must" : {
"terms" : { "field1" : ["term1"] , "field1" : ["term2"] }
}
}
}

我认为这是不可能的(elasticSearch 2.4.1),因为我收到错误

"type": "query_parsing_exception",
"reason": "[terms] query does not support multiple fields",...

我猜我应该将其移至过滤器查询,但我想知道是否有人可以确认这是最简单最有效的更改(在这个阶段我正在寻找更改最少的路径)?

最佳答案

解决方案就是在您的第一个查询中使用 should 而不是 must:

{
"bool" : {
"should" : [ { <---- change this
"terms" : {
"field1" : [ "term1", "term2" ]
}
}, {
"terms" : {
"field2" : [ "term3" ]
}
} ]
}

关于elasticsearch - 如何在术语查询中模拟多个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43633472/

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