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”,答案将是整个文档,而要显示的是顶级供应商名称。
我想要呈现的是“迈阿密约翰花店”,我不确定如何理解搜索结果中的哪个部分。...
有人以前必须做过这样的事吗?
答案 0 :(得分:0)
elasticsearch中的处理关系需要一些工作,但是您可以做到。我建议您阅读ES指南的handling relationships一章以了解全局。
那我的建议是将您的分支索引为nested documents。因此,它们将作为不同的文档存储在索引中。
这将要求您更改查询语法以使用nested queries,这可能会给您带来麻烦。但是作为交换,您将被授予inner_hits functionality。
它将使您知道哪个子文档(嵌套文档)与您的查询匹配。