首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >elasticsearch bool查询必须与OR结合

elasticsearch bool查询必须与OR结合
EN

Stack Overflow用户
提问于 2015-02-16 09:59:13
回答 6查看 253.7K关注 0票数 289

我目前正在尝试将基于solr的应用程序迁移到elasticsearch。

我有一个lucene查询:

代码语言:javascript
运行
复制
(( 
    name:(+foo +bar) 
    OR info:(+foo +bar) 
)) AND state:(1) AND (has_image:(0) OR has_image:(1)^100)

据我所知,这是must子句与布尔OR的组合。

获取所有包含(foo AND bar in name) OR (foo AND bar in info)的文档。在此之后,筛选结果由具有图像的条件state=1和boost文档生成。

我一直试图在must中使用bool查询,但未能将布尔OR引入must子句。以下是我所拥有的:

代码语言:javascript
运行
复制
GET /test/object/_search
{
  "from": 0,
  "size": 20,
  "sort": {
    "_score": "desc"
  },
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "foo"
          }
        },
        {
          "match": {
            "name": "bar"
          }
        }
      ],
      "must_not": [],
      "should": [
        {
          "match": {
            "has_image": {
              "query": 1,
              "boost": 100
            }
          }
        }
      ]
    }
  }
}

如您所见,mustinfo条件缺失了。

**更新**

我更新了我的elasticsearch查询,并去掉了这个功能分数。我的基本问题仍然存在。

EN

Stack Overflow用户

发布于 2020-03-05 13:02:02

如果使用Solr的默认查询解析器或Lucene查询解析器,则几乎可以将其放入查询字符串查询中:

代码语言:javascript
运行
复制
POST test/_search
{
  "query": {
    "query_string": {
      "query": "(( name:(+foo +bar) OR info:(+foo +bar)  )) AND state:(1) AND (has_image:(0) OR has_image:(1)^100)"
    }
  }
}

也就是说,您可能希望使用一个布尔查询,就像您已经发布的那个,甚至是两者的结合。

票数 7
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28538760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档