数组中的术语过滤只考虑最后一项?

时间:2015-08-02 08:59:24

标签: elasticsearch

我想在弹性搜索中搜索具有以下查询标记a或b或c的文档。但它总是返回只有c而忽略a或b的文档。任何人都可以帮忙吗?

"filtered": {
            "filter": {
                "term": {
                    "tags": ['a','b','c']
                }
            },
            "query": {
                match: {
                    rawText: 'filter'
                }

            }
        }

2 个答案:

答案 0 :(得分:7)

在Elasticsearch中,术语与术语过滤器之间存在差异。

术语过滤器:

{
    "constant_score" : {
        "filter" : {
            "term" : { "user" : "kimchy"}
        }
    }
}

条款过滤器:

{
    "constant_score" : {
        "filter" : {
            "terms" : {
                "user" : ["kimchy", "elasticsearch"],
                "execution" : "bool",
                "_cache": true
            }
        }
    }
}

尝试使用术语过滤器。

答案 1 :(得分:4)

  

使用 term :所有给定元素必须匹配

     

请参阅官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/1.6/query-dsl-term-filter.html

或者这个:

  

使用条款:Min。其中一个给定元素必须匹配

     

请参阅官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-terms-filter.html

您要求使用术语/术语过滤器。在查询中使用术语/术语有另一种解释!