我需要将一系列完整的术语与elasticsearch匹配。
仅应返回具有相同元素数组的文档。
文档数组中不应再有元素或元素子集。
元素的顺序无关紧要。
例:
filter:
id: ["a", "b"]
documents:
id: ["a", "b"] -> match
id: ["b", "a"] -> match
id: ["a"] -> no match
id: ["a", "b", "c"] -> no match
最终,我想使用Java High Level REST Client来实现查询,尽管也可以使用elasticsearch dsl的示例。
参考方案
虽然本机上似乎不支持此功能,但是您可以继续使用脚本过滤器来实现此行为,如下所示:
GET your_index/_search
{
"query": {
"bool": {
"must": [
{
"script": {
"script": "doc['tags'].values.length == 2"
}
},
{
"term": {
"tags": {
"value": "a"
}
}
},
{
"term": {
"tags": {
"value": "b"
}
}
}
]
}
}
}
脚本过滤器通过数组大小限制搜索结果,而术语过滤器指定该数组的值。确保在标签字段上启用fielddata以便在其上执行脚本。
Elasticsearch-如何使用Java在JSON对象中添加或编辑字符串数组? - java我在Java中分别具有用户ID,名称和类型变量,如int,string和arraylist。我想像这样将其插入Elasticsearch数据库中:users { "userid": 5, "name": "test", "type": ["U1", "…
Java-搜索字符串数组中的字符串 - java在Java中,我们是否有任何方法可以发现特定字符串是字符串数组的一部分。我可以避免出现一个循环。例如String [] array = {"AA","BB","CC" }; string x = "BB" 我想要一个if (some condition to tell wheth…
Java RegEx中的单词边界\ b - java我在使用\b作为Java Regex中的单词定界符时遇到困难。对于text = "/* sql statement */ INSERT INTO someTable"; Pattern.compile("(?i)\binsert\b");找不到匹配项Pattern insPtrn = Pattern.compile(&…
Java Double与BigDecimal - java我正在查看一些使用双精度变量来存储(360-359.9998779296875)结果为0.0001220703125的代码。 double变量将其存储为-1.220703125E-4。当我使用BigDecimal时,其存储为0.0001220703125。为什么将它双重存储为-1.220703125E-4? 参考方案 我不会在这里提及精度问题,而只会提及数字…
使用R包的弹性搜索客户端 - java我正在使用elastic search作为数据存储。在我的项目中,我需要使用elastic search分析R数据。在java中,我使用es客户端执行了这些操作。但是我在R中找不到任何支持elastic search操作的软件包。我已经尝试过使用RCurl软件包,例如:count <- fromJSON(getURL("http://loca…