代码之家  ›  专栏  ›  技术社区  ›  JohnBigs

如何用弹性搜索法分解搜索结果?

  •  0
  • JohnBigs  · 技术社区  · 5 年前

    我的elasticsearch中有代表供应商的文档,每个文档都是供应商,每个供应商也有分支,如下所示:

    {
        "id": 1,
        "supplierName": "John Flower Shop",
        "supplierAddress": "107 main st, Los Angeles",
        "branches": [
            {
                "branchId": 11,
                "branchName": "John Flower Shop New York",
                "branchAddress": "34 5th Ave, New York"
            },
            {
                "branchId": 12,
                "branchName": "John Flower Shop Miami",
                "branchAddress": "56 ragnar st, Miami"
            }
        ]
    }
    

    目前我公开了允许在字段中搜索的api:supplierName、supplierAddress、branchName和branchAddress。

    我的问题是,考虑到上面的示例文档,如果您搜索“John Flower Shop Miami”,答案将是整个文档,将显示的是顶级供应商名称。

    我想展示的是“迈阿密约翰花店”,我不知道如何理解搜索结果的哪一部分是什么。。。。

    1 回复  |  直到 5 年前
        1
  •  0
  •   Pierre Mallet    5 年前

    在elasticsearch中处理关系是一项工作,但你可以做到。我建议您阅读ES指南的章节 handling relationships 有大局。

    nested documents . 因此,它们将作为不同的文档存储在索引中。

    它将要求您更改查询语法以使用 nested queries 那可能是一种痛苦。。。但作为交换,你将获得 inner_hits functionality .