早上好,我正在尝试学习如何查询弹性,我有一个场景,我无法找到解决方案,我有一个Dictionary<Guid, List<int>>
存储在Elastic上:
"myStoredDictionary": {
"guidA": [14],
"guidB": [16,17],
"guidC": [30,31]}
我希望其他具有相同结构的词典能够匹配结果:
这些应该匹配:
"mySearchDictionary1": {
"guidA": [14,15],
"guidB": [16],
"guidC": [30]}
"mySearchDictionary2": {
"guidA": [14],
"guidB": [16]}
"mySearchDictionary3": {
"guidA": [14,15],
"guidX": [0]
}
所以基本上逻辑是:对于两个字典上存在的每个键,存储的字典应该至少有一个来自搜索列表的整数。
有人可以给我一些关于如何处理这个问题的提示吗?谢谢!
答案 0 :(得分:0)
我通过将所有内容存储为一个简单的数组来解决这个问题,忽略了guid:
"values": [4,14,17,30]
然后使用必须使用每个guid的术语来做诀窍:
{
"query": {
"bool": {
"must": [
{ "terms": { "values": [4,41,42,43] } },
{ "terms": { "values": [14,141,142,143] } },
{ "terms": { "values": [17,171,172,173] } }
]
}
}
}
因此,如果条件数组中的至少一个条目位于值列表中,则匹配。