elasticsearch - 最小值应匹配过滤查询

标签 elasticsearch

是否可以有这样的查询

  "query": {
  "filtered": {
     "filter": {
        "terms": {
           "names": [
             "Anna",
             "Mark",
             "Joe"
           ],
           "execution" : "and"
        }
      }
    }
  } 

"minimum_should_match": "2" 语句?

我知道我可以使用一个简单的查询(我试过,它有效)但我不需要计算分数。我的目标只是过滤包含 2 个值的文档。

分数通常会严重影响检索文档所需的时间吗?

使用这个查询:

  "query": {
  "filtered": {
     "filter": {
        "terms": {
           "names": [
             "Anna",
             "Mark",
             "Joe"
           ],
           "execution" : "and",
           "minimum_should_match": "2"
        }
      }
    }
  } 

我遇到了这个错误:

QueryParsingException[[my_db] [terms] filter does not support [minimum_should_match]]

最佳答案

最小应匹配不是terms filter 的参数。如果这是您正在寻找的功能,我可能会像这样重写您的查询,以使用包装在 query filter 中的 bool query:

{
   "filter": {
      "query": {
         "bool": {
            "should": [
               {
                  "term": {
                     "names": "Anna"
                  }
               },
               {
                  "term": {
                     "names": "Mark"
                  }
               },
               {
                  "term": {
                     "name": "Joe"
                  }
               }
            ],
            "minimum_should_match": 2
         }
      }
   }
}

您将获得最好完全匹配所有这三个词的文档,但查询也会将文档与三个词中的两个恰好匹配。 must 是隐含的 and。我们也不计算分数,因为我们已将查询作为过滤器执行。

关于elasticsearch - 最小值应匹配过滤查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32824588/

相关文章:

node.js - Elasticsearch 未定义?

elasticsearch - 使用 Logstash 建立索引时如何修复 Elasticsearch 中的重复文档?

elasticsearch - 这些数字在 ElasticSearch head 中意味着什么?

ruby-on-rails - 在轮胎中乘以多面?

spring-boot - java.lang.NoSuchMethodError : 'org. Elasticsearch .core.TimeValue org.elasticsearch.index.reindex.BulkByScrollResponse.getTook()

elasticsearch - Elasticsearch 地理空间搜索实现

ruby-on-rails - 多模型单索引方法 - 通过轮胎进行 Elasticsearch

sorting - ElasticSearch不对结果进行排序

elasticsearch - curl : (7) Failed to connect to localhost port 9200: Connection refused. 即使在配置/etc/elasticsearch/elasticsearch.yml之后

c# - 使用NEST在ElasticSearch的IEnumerable属性上配置分析器的问题