2017-08-08 82 views
0

早上好詞典彈性的比賽,我想了解如何查詢彈性和我有,我不能找到解決辦法的情況下,我都存儲在彈性爲Dictionary<Guid, List<int>>與使用NEST

"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

我解決了這個由存儲所有整數作爲一個簡單的數組,忽略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] } } 
      ] 
     } 
    } 
} 

所以,如果術語數組中至少有一個條目位於值列表中,是一個匹配項。