gpt4 book ai didi

elasticsearch - 多语言 Elasticsearch 索引最佳实践/经验

转载 作者:行者123 更新时间:2023-11-29 02:43:24 29 4
gpt4 key购买 nike

想知道在 elasticsearch 中用于多语言索引和搜索的最佳实践或经验是什么。我通读了许多资源,并尽我所能提炼出可用的索引选项:

  1. 每种语言的单独索引;

  2. 多语言字段的多字段类型;

  3. 所有可能语言的单独字段。

所以,想知道选择其中一个选项(或我错过的其他选项)的副作用是什么。我想拥有更多索引并不会真正降低集群的速度(如果它不是大量的语言),所以不确定选择 2 或 3 会得到什么,除了可能更容易维护。

欢迎任何帮助!

最佳答案

一个有点老的问题,但无论如何这些信息可能会有帮助。索引/映射结构主要取决于您的用例。
您需要同时使用所有语言还是一次只使用一种语言?

  • 选项 1:例如多语言网站——用户只能以他们选择的当前语言查看和搜索。在这种情况下,我的经验是 index-per-lang 将是一个很好的解决方案,特别是如果您需要能够轻松添加和删除语言。数据量在索引之间分开(性能优势)。为每种语言轻松设置分析器,尤其是当它们的设置仅因语言名称不同时。我个人目前正在为我的一个项目使用此选项

选项 2 和 3 的一般说明:使用其中一个选项可以让您根据可以定义评分的语言对文档进行不同的评分每个语言领域。如果您需要添加更多语言,您可以向映射添加新字段,但无法删除或更改现有字段。因此,您必须重新索引所有内容并将已删除语言的属性设置为空。您将需要为每种新语言添加新的分析器。但需要先关闭索引,修改完成后再打开。

  • 选项 2:如果您需要一次搜索所有语言,多字段为您提供了最简单的访问方式,因为您可以同时处理所有子字段:
    "book_title": {        "type": "multi_field",        "fields": {            "english": {                "type": "string"            },            "german": {                "type": "string"            },            "italian": {                "type": "string"            },        }    }

您可以在此处搜索特定语言(例如:“book_title.english”)或所有语言(使用“book_title”)。您应该注意不要使用“book_title”名称更新字段,而是使用“book_title.[语言]”。使用“book_title”将导致使用相同数据更新所有子字段(这可能不是您想要的)

  • 选项 3:完全独立的字段 - 如果您需要按照选项 2 进行搜索,则需要将它们全部放在搜索查询中,因为您不能在索引方面更安全错误覆盖所有语言

  • 选项 4 的想法 - 按语言使用类型:如果您只有一种类型的文档,则可以使用。每种语言可以有不同的字段。如果您有多种文档类型,则无用

关于elasticsearch - 多语言 Elasticsearch 索引最佳实践/经验,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22153606/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com