【发布时间】:2020-06-08 06:46:06
【问题描述】:
我在弹性搜索中有两个索引,我想在搜索中组合它们。
一个索引有一些文章,例如
(
[id] => 25
[name] => my test artcile
[city] => [
id => 123
]
)
第二个索引有城市名称,例如
(
[id] => 123
[name] => my city
)
因此,如果我在文章中进行搜索查询,我想要这样的结果,结果中也使用城市名称,例如
(
[id] => 25
[name] => my test artcile
[city] => [
id => 123
name => my city
]
)
有没有办法做到这一点?否则我必须扩展文章的导入以直接添加城市名称,但首选方式是索引之间的连接。
【问题讨论】:
-
搜索引擎并不真正适用于像 RDBMS 这样的 JOIN。最佳实践是对数据进行非规范化。也就是说,Elasticsearch 中对 JOIN 有一定程度的支持。看看这个,elastic.co/guide/en/elasticsearch/reference/current/…
-
@WinnieDaPooh 这是我第一次使用带有多个索引的elasticsearch,我希望有一种简单的方法可以将它们组合起来(就像你说的“JOIN”一样)。如果只有直接添加数据的选项……这是可能的。
-
您正在寻找的正确术语是 JOIN,不,我认为没有简单的方法。我认为甚至没有办法。我链接的 JOIN 要求您在一个索引中进行适当的数据建模。如果您绝对必须将数据放在两个单独的索引中,您可以查看 Solr 的 Streaming Expression。
标签: elasticsearch join indexing