Elasticseach"应该":如何找到匹配数量

时间:2016-09-13 14:00:04

标签: elasticsearch

例如,我查询了几个术语

{
    "query": {
        "bool": {
            "should": [
                {
                    "term": { "colors": 5 }
                },
                {
                    "term": { "productTypes": 10 }
                },
                {
                    "term": { "rooms": 18 }
                }
            ]
        }
    }
}

我想知道哪些文件符合所有3个条款的条件,而不是。 可能我可以使用文档得分来做,但无法找到 - 如何。

" MAX_SCORE"只有最大的已找到文件得分,所以如果没有完整匹配的文件 - 它将是部分匹配的最大值。

我尝试使用" constant_score"将每个词的得分设置为1。并将得分与过滤器数量进行比较:

{
    "explain": true,
    "query": {
        "bool": {
            "should": [
              { "constant_score": {
                "filter": {  "match_all": {}},
                "boost": 1
              }},
              { "constant_score": {
                "filter": {  "term": { "collection": 14579 } },
                "boost": 1
              }},
              { "constant_score": {
                "filter": {  "term": { "rooms": 19 } },
                "boost": 1
              }}
            ]
        }
    }
}

...但是" queryNorm"降低这个分数,我无法找到解决方法。

有什么建议吗?

0 个答案:

没有答案