首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用elasticsearch-dsl创建“In”条件筛选器?

如何使用elasticsearch-dsl创建“In”条件筛选器?
EN

Stack Overflow用户
提问于 2020-08-14 10:32:01
回答 1查看 551关注 0票数 0

下面的查询是我想使用elasticsearch-dsl构建的,但是我不知道如何去做。

代码语言:javascript
复制
GET /my_index/_search
{
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "should": [
            {
              "term": {
                "status": "a"
              },
              "term": {
                "status": "b"
              },
              "term": {
                "status": "c"
              }
            }
          ]
        }
      }
    }
  }
}

我只想以SQL格式执行如下查询

代码语言:javascript
复制
select * from my_index where status in ("a","b","c")

使用elasticsearch-dsl-py,这是我所能得到的最接近的,但它是不一样的。

代码语言:javascript
复制
class MyIndex(Document):

    status = Keyword() / Text()
    
    

MyIndex.search().filter('should', status=["a","b","c"])
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-14 10:46:44

另一种方法是使用带有数组的terms查询,因为每个数组元素都是隐式ORed。另外,我不确定您正在运行的ES的哪个版本,但是只知道很久以前版本5中的filtered has been replaced by bool

代码语言:javascript
复制
GET /my_index/_search
{
  "query": {
    "bool": {
      "filter": {
         "terms": {
           "status": ["a", "b", "c"]
         }
      }
    }
  }
}

使用elasticsearch-dsl-py,这将转换为:

代码语言:javascript
复制
s = Search()
s = s.filter('terms', status=['a', 'b', 'c'])
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63411075

复制
相关文章

相似问题

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