如何使用elasticsearch分解seearch结果?

时间:2019-02-05 13:14:00

标签: elasticsearch

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 个答案:

答案 0 :(得分:0)

elasticsearch中的处理关系需要一些工作,但是您可以做到。我建议您阅读ES指南的handling relationships一章以了解全局。

那我的建议是将您的分支索引为nested documents。因此,它们将作为不同的文档存储在索引中。

这将要求您更改查询语法以使用nested queries,这可能会给您带来麻烦。但是作为交换,您将被授予inner_hits functionality

它将使您知道哪个子文档(嵌套文档)与您的查询匹配。