2015-12-20 21 views
0

比方说,我有配方组合的食谱。很多。Can Elasticsearch可能会提示数组中缺失的项目吗?

{"sales_name":"pizza Margherita", 
"ingredients": ["flour", "water", "tomato", "mozzarella", "barm", "salt"]} 

{"sales_name":"kaiser roll", 
"ingredients": ["flour", "barm", "malt", "water", "salt"]} 

{"sales_name":"Sacher Torte", 
"ingredients": ["flour", "water", "sugar", "eggs", "chocolate", "apricot jam"]} 

{"sales_name":"bratwurst", "ingredients": ["pork", "veal", "water", "salt"]} 

鉴于某些成分的询问:“面粉”,“水”,Elasticsearch怎么能提出最有可能的其它成分,通过在文件计数呢?
在这个例子中:“盐”出现在“面粉”和“水”的食谱中2次,而“糖”只出现一次。 因此查询应该导致“盐”。

回答

1

使用各种聚合物上的聚合物。由于我们已经在使用面粉和水,因此排除它们是一个好主意。

{ 
    "query": { 
    "terms": { 
     "ingredients": [ 
     "water", 
     "flour" 
     ] 
    } 
    }, 
    "aggs": { 
    "bestMatch": { 
     "terms": { 
     "field": "ingredients", 
     "exclude": [ 
      "water", 
      "flour" 
     ] 
     } 
    } 
    } 
} 
+0

谢谢!这或多或少是需要的。只有我必须做的事情是用需要所有匹配成分的东西来替代术语查询。探索一个Qbox.io文章btw。 :-) –