java - 最小数量应匹配,应与 POST 匹配

标签 java elasticsearch

我正在尝试查询 elasticsearch 5.2 休息端点:

{
    "query": {
        "bool": {
            "should": [
                {"match": { "file-source": "css" }},
                {"match": { "file-source": "js" }}
            ],
            "minimum_number_should_match": 2
        }
    }
}

但是,这在 ElasticSearch 中没有返回任何命中,我不明白为什么这不起作用,并且 ElasticSearch 文档中的示例很少。

我正在尝试匹配两者。但也可以是“或”。

有文件源:“css”,文件源:“js”,文件源:“json”

但我想要 CSS 和 JS 的选项...

下面是使用 Java API 进行测试时的一些示例 Java 代码:

// conditions met from the form
query.should(QueryBuilders.matchQuery("file-source", "css"));
query.should(QueryBuilders.matchQuery("file-source", "js"));
query.minimumNumberShouldMatch(2);

最佳答案

让我们解释一下给定的查询。

"should": [
            {"match": { "file-source": "css" }},
            {"match": { "file-source": "js" }}
        ]

这将返回所有文件源为 css 或 js 的文档。

      A = <documents with file-source = css or jss>

     "minimum_number_should_match": 2
      B = A <documents with file-source at least 2 of css, jss>

这会缩小结果范围,并将 A 限制为同时包含 css 和 js 的文档。请记住“css OR js”也包含“css 和 js”。但在你的情况下,似乎每个文档都有唯一的文件源,因此 A 将成为一个空集,因为没有“css 和 js”。

在这种情况下,B 变为空,因为没有包含 file-source = css 和 jss 的文档

尝试删除 - "minimum_number_should_match": 2。它应该可以工作。

关于java - 最小数量应匹配,应与 POST 匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42400445/

相关文章:

scala - 从 Spark 中的单词中删除特殊字符 - scala

elasticsearch - Kibana5,索引模式不包含以下任何字段类型 : *

python - 使用策展人python API无法过滤和删除Elasticsearch的旧索引

java - 如何使用 Hibernate/JPA 将 Oracle 类型对象转换为 Java 对象?

java - 使用 Jackson 将 json 数组转换为某种 Java 表示形式

java - Android 应用程序在 Calender.getInstance 处没有响应

elasticsearch - 使用python rest api获取和搜索elasticsearch数据

java - 用Gson写入引用值

java - Java中将ArrayList转换为mysql插入参数

elasticsearch - 如何将 Slack Integration 添加到弹性云的 keystore