想知道在elasticsearch中进行多语言索引和搜索的最佳实践或经验是什么。我研究了许多资源,尽我所能概括一下,可用的索引选项有:
每种语言单独一个索引;
针对多语言字段的多字段类型;
为所有可能的语言分别建立字段。
那么,想知道选择这些选项中的哪个会产生什么副作用(或者我错过了其他选项)。我猜更多的索引不会真正减慢集群(如果它不是一些巨大数量的语言),所以不确定选择 2 或 3 会带来什么好处,除了可能更容易维护。
欢迎任何帮助!
想知道在elasticsearch中进行多语言索引和搜索的最佳实践或经验是什么。我研究了许多资源,尽我所能概括一下,可用的索引选项有:
每种语言单独一个索引;
针对多语言字段的多字段类型;
为所有可能的语言分别建立字段。
那么,想知道选择这些选项中的哪个会产生什么副作用(或者我错过了其他选项)。我猜更多的索引不会真正减慢集群(如果它不是一些巨大数量的语言),所以不确定选择 2 或 3 会带来什么好处,除了可能更容易维护。
欢迎任何帮助!
在这里,你可以按特定语言搜索(例如:“book_title.english”),也可以按所有语言搜索(使用“book_title”)。请务必注意,不要使用“book_title”名称更新该字段,而应使用“book_title.[语言]”。使用“book_title”将导致所有子字段都更新为相同的数据(这可能不是你想要的)。
选项3:完全分开的字段-如果需要像选项2那样搜索,则需要将它们全部放入搜索查询中,从索引的角度来看更安全,因为您不能错误地覆盖所有语言
选项4的想法-按语言使用不同类型:如果只有一种文档类型,则可以使用此选项。您可以拥有每种语言不同的字段。如果有多种文档类型,则无用。
.../eshopName/language/product[]
。你认为这是否可以成为处理仅具有产品搜索的多语言电子商店的标准方式?但是,我必须能够按语言或所有语言执行搜索,我应该能够通过 /eshop/en,de,fr/product
获得所有语言的搜索结果。 - ulkas如果其他人正在寻找答案,这里是ElasticSearch网站文档的直接链接:https://www.elastic.co/guide/en/elasticsearch/guide/current/mixed-lang-fields.html
我会选择选项1(每种语言一个单独的索引),正如Elasticsearch文档所建议的那样,因为它可以确保避免术语频率问题。
如果您的文档包含多种语言,您可以放置多个索引,并在查询时使用字段折叠来避免返回相同文档的重复。
我认为这完全取决于使用情况。如果我们有多个带有混合语言(区域设置)的字段,那么选项1可能不是最佳选择,因为对于不可本地化的字段会有大量冗余数据。在这种情况下,选项2可能更好。