【问题标题】:Can Elasticsearch suggest missing items of an array?Elasticsearch 可以建议缺少的数组项吗?
【发布时间】:2015-12-20 23:55:20
【问题描述】:

假设我有一些成分组合的食谱。很多。

{"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 次,而“糖”只出现了一次。 因此查询结果应该是“salt”。

【问题讨论】:

    标签: elasticsearch recommendation-engine


    【解决方案1】:

    对成分使用聚合。由于我们已经在使用面粉和水,因此最好将它们排除在外。

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

    【讨论】:

    • 谢谢!这或多或少是需要的。我唯一要做的就是用需要所有匹配成分的东西来替换术语查询。顺便说一句,为 Qbox.io 文章探索这一点。 :-)
    猜你喜欢
    • 2021-04-18
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    • 2021-02-14
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    • 2020-11-17
    相关资源
    最近更新 更多