elasticsearch - 如何创建不应与多个类别中的任何一个匹配的ElasticSearch查询

标签 elasticsearch lucene

我正在elasticSearch中寻找与一个或另一个品牌不匹配的文件,但要完全满足修复要求。我正在寻找不是来自丰田,宝马或奥迪的参赛作品。但是条目必须是superEntry(完全匹配)

以下查询是我正在从事的工作:

    "query": {
        "bool": {
            "filter": {
                "term": {
                    "superEntry": true
                }
            },
            "must": {
                "bool": {
                    "must_not": [
                        {
                            "term": {
                                "brand": "Toyota"
                            }
                        },
                        {
                            "term": {
                                "brand": "BMW"
                            }
                        },
                        {
                            "term": {
                                "brand": "Audi"
                            }
                        }
                    ]
                }
            }
        }
    }
}

预期:我找到了其他品牌的任何 super 条目,但没有找到它们的3。上面的查询仍然列出了我的宝马汽车示例。

最佳答案

未经测试,但类似的东西会有所帮助-

{
  "size": 10,
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "superEntry": true
          }
        }
      ],
      "must_not": [
        {
          "terms": {
            "brand": [
              "Toyota",
              "BMW",
              "Audi"
            ]
          }
        }
      ]
    }
  }
}

关于elasticsearch - 如何创建不应与多个类别中的任何一个匹配的ElasticSearch查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57061464/

相关文章:

ruby-on-rails - 如何在Rails上使用Tyre gem检查字段是否为空或为空

arrays - 嵌套数组元素的 Elasticsearch 查询策略

ubuntu - ElasticSearch 未在本地主机 :9200 after apt-get install 上运行

lucene - 具有多个不同值的字段

elasticsearch - Elasticsearch edge_ngram问题?

search - 如何使用ElasticSearch和CURL请求在多个字段中搜索?

elasticsearch - 在Elasticsearch查询中排除子文档

full-text-search - 无限制执行 Lucene 搜索的推荐方法

java - Hibernate 搜索通配符未返回预期值

elasticsearch - 在 Kibana 中使用 Lucene 表达式除以 2 个整数字段