首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Elasticsearch多项过滤器

Elasticsearch多项过滤器
EN

Stack Overflow用户
提问于 2014-01-18 18:19:14
回答 1查看 95.9K关注 0票数 55

我是Elasticsearch的新手,所以我的问题是。我想用elasticsearch做一个搜索查询,并用多个词条进行过滤。

如果我想搜索用户'tom',那么我希望找到用户'isActive = 1‘、'isPrivate = 0’和'isOwner = 1‘的所有匹配项。

这是我的搜索查询

"query":{
    "filtered": {
        "query": {
            "query_string": {
                "query":"*tom*",
                "default_operator": "OR",
                "fields": ["username"]
            }
        },
        "filter": {
            "term": { 
                "isActive": "1",
                "isPrivate": "0",
                "isOwner": "1"
            }
        }
    }
}   

当我使用2个术语时,它就像一个护身符,但当我使用3个术语时,它就不起作用了。

谢谢你的帮助!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-18 22:58:47

你应该使用bool filterAND你所有的术语:

"query":{
    "filtered": {
        "query": {
            "query_string": {
                "query":"*tom*",
                "default_operator": "OR",
                "fields": ["username"]
            }
        },
        "filter": {
            "bool" : {
                "must" : [
                    {"term" : { "isActive" : "1" } },
                    {"term" : { "isPrivate" : "0" } },
                    {"term" : { "isOwner" : "1" } }
                ]
             }
         }
     }
}   

对于2.x+版本,您可以使用bool查询而不是filtered查询,只需使用一些简单的替换方法:https://www.elastic.co/guide/en/elasticsearch/reference/7.4/query-dsl-filtered-query.html

票数 92
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21202775

复制
相关文章

相似问题

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