我正在尝试查询 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/