想知道在elasticsearch中多语言索引和搜索中使用的最佳实践或经验是什么?我读了很多资源,尽我所能提取索引的可用选项有:多语言弹性搜索索引最佳实践/体验
每种语言的单独索引;
多字段字段的多字段类型;
用于所有可能语言的单独字段。
所以,想知道选择这些选项(或其他一些我错过的)的副作用是什么。我想有更多的索引并不会真的减慢集群的速度(如果它不是很多的语言),所以不知道我会从选择2或3中得到什么,除非可能更容易维护。
欢迎任何帮助!
想知道在elasticsearch中多语言索引和搜索中使用的最佳实践或经验是什么?我读了很多资源,尽我所能提取索引的可用选项有:多语言弹性搜索索引最佳实践/体验
每种语言的单独索引;
多字段字段的多字段类型;
用于所有可能语言的单独字段。
所以,想知道选择这些选项(或其他一些我错过的)的副作用是什么。我想有更多的索引并不会真的减慢集群的速度(如果它不是很多的语言),所以不知道我会从选择2或3中得到什么,除非可能更容易维护。
欢迎任何帮助!
有点古老的问题,但信息可能有帮助无论如何。 索引/映射结构主要取决于你的用例。
您是否需要同时使用所有语言或者只使用一种语言?
一般注意事项3:使用其中一个选项让你得分的文件不同的能力,基于语言因为您可以为每个语言字段定义评分。如果您需要添加更多语言,则可以将新字段添加到映射中,但无法删除或更改现有字段。因此,您必须重新索引您的所有内容,并将已删除语言的属性设置为空。您需要为每种新语言添加新的分析仪。但需要先关闭索引并在更改后打开索引。
"book_title": { "type": "multi_field", "fields": { "english": { "type": "string" }, "german": { "type": "string" }, "italian": { "type": "string" }, } }
在这里,您可以在特定的语言搜索(例如:“book_title.english‘),或在所有语言(使用’BOOK_TITLE”)。您应该小心而不是更新字段使用“book_title”名称,但使用“book_title。[language]”。使用“BOOK_TITLE”将导致更新所有的子场具有相同的数据(这可能不是你想要的)
选项3:完全不同的领域 - 你需要把他们都在搜索查询,如果您需要搜索作为选项2,更安全的索引方面,你不能覆盖误所有语言
理念选项4 - 利用类型,每个语言的:可以,如果使用你只有一种类型的文件。每种语言可以有不同的字段。不是有用的,如果你有多个文档类型
在我来到这篇文章之前,我正在考虑类型4。我的场景包含多个网上商店,每个商店都有一种或多种语言。唯一可搜索的文档类型是该产品。我正在考虑索引/类型/文档结构:'.../eshopName/language/product []'。你认为这可能是一个标准的方式来处理多语种的商店只是产品搜索?然而,我必须能够按照语言或所有语言执行搜索,而我应该可以通过'/ eshop/en,de,fr/product'获得所有语言的搜索结果 – ulkas
不应该使用选项4,因为它会导致混乱索引频率,如下所述:https://www.elastic.co/guide/en/elasticsearch/guide/current/one-lang-docs.html – Lumbendil
如何设置每个字段的值? – IamIC
如果其他人都在寻找答案,这里有一个直接链接到文件上ElasticSearch网站:https://www.elastic.co/guide/en/elasticsearch/guide/current/mixed-lang-fields.html
在我的用例
只有一种语言是强制性的,所以我使用一个索引,对每种已知语言都使用分析器,将分析器放在语言的路径上,并将语言相关内容保存在多个字段中:一次用于通过语言进行分析,一次用作“无语言”的默认语言。 – cfrick