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

Md.*_*din 3 elasticsearch

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

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

            }
        }
Run Code Online (Sandbox Code Playgroud)

Mau*_*man 8

在Elasticsearch中,术语和术语过滤器之间存在差异.

术语过滤器:

{
    "constant_score" : {
        "filter" : {
            "term" : { "user" : "kimchy"}
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

条款筛选:

{
    "constant_score" : {
        "filter" : {
            "terms" : {
                "user" : ["kimchy", "elasticsearch"],
                "execution" : "bool",
                "_cache": true
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

尝试使用术语过滤器.


sch*_*rht 5

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

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

或这个:

条款:分钟。给定元素之一必须匹配

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

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

  • 从 Elasticsearch 2.2.0 开始,“[term] 查询不支持值数组” (3认同)