当前位置: 首页 > 面试题库 >

Elasticsearch:对同一数据记录的每种语言使用单独的索引

王辉
2023-03-14
问题内容

我有一个数据记录,其中有一个名为标题的字段。记录可能同时具有不同的标题语言。这样的记录包含其他字段,其值不会随语言而变化,因此在以下两个示例中未列出它们:

Record #1:
Title (English): Hello

Record #2:
Title (English): World
Title (Spanish): mundo

当前,标题有四种可能的语言:英语,西班牙语,法语和中文。随着系统的发展,将支持更多的语言。

我是Elasticsearch的新手。我认为每种语言都有单独的索引。因此对于记录2,我将创建两个Elasticsearch文档(每种语言一个),并将文档发送到与其语言相对应的索引。

在索引,更新,删除和搜索方面,这是一个好的/可接受的设计吗?任何问题?

对于这种设计,我认为它至少具有以下好处:

  • 我可以轻松决定每种语言需要多少个分片
  • 我可以确定索引(语言)的碎片数量和位置
  • 当系统破坏或重建现有数据的索引时,我可以轻松地为新语言添加索引。
  • 该系统可以最大程度地利用html" target="_blank">分布式计算能力

感谢您的输入!

最好。


问题答案:

您的解决方案可能会正常工作,但是如果您开始允许多语言搜索,则可能会遇到重复文档的问题。

每个字段具有多个可能的值可能是最佳选择,例如:

  • title.engligsh
  • title.spanish

您可以为每种语言使用完全不同的分析规则,而无需复制文档。

这种方法将进一步允许您为具有自己分析规则的文档的任何字段添加新标题。请注意,最后我检查了一下,如果使用全新的自定义分析器,则需要打开/关闭索引才能使其生效,这将导致几秒钟的停机时间。

我将尝试寻找一些时间以端到端的例子来扩展这个答案。



 类似资料:
  • 我有一个数据记录,其中有一个名为title的字段。一个记录可能同时具有不同的标题语言。这样的记录还有其他字段,其值不随语言而变化,因此我不在以下两个示例中列出它们: 目前有四种可能的语言为标题:英语,西班牙语,法语和汉语。当系统增长时,将会有更多的语言支持。 我是ElasticSearch的新手。我想为每种语言建立一个单独的索引。因此,对于记录#2,我将创建两个Elasticsearch文档(每种

  • 问题内容: 我有一个表格,其中有一个父/子关系,其中每个孩子的列数据都需要连接到父母中。 这是一些示例数据,该数据已损坏,因此父记录(Id = 96) 为 NULL 。关系是通过字段进行的: 数据应如下所示: 编辑: 后代级别可以是任何深层次,但深子级后代需要更新为主要的父级 。拿下面的最后两个记录( Id = 100 和 Id = 101 )都链接到97。因为 Id = 97 IS NOT NU

  • ,日志记录将进入一个文件; (路径)/service_name/service_name.log 我想用logback复制这种行为,但在logback.xml配置中获取“logger”名称时遇到了真正的困难。它可以在log encoder.pattern中看到,即“%d%-5level%logger{35}-%msg%n”。

  • 我目前正在开发一个应用程序,它将为不同的目的生成两个不同的日志文件。因为我是log4j2新手,所以无法实现它。这是我的配置文件(log4j2.xml): 我不确定我是否用了正确的方法。下面是我的java方法,它试图使用log4j2进行日志记录 谢谢

  • 如何在按分页顺序聚合术语字段后获取记录。到目前为止,我有这个: 我对此进行了研究,有人说,通过使用复合聚合或分区,这是可能的。但我不知道我如何才能真正做到这一点。 我也查看了bucket\u sort,但我似乎无法使其发挥作用: 我对这件事很在行。请帮帮我。谢谢

  • 问题内容: 我想从ElasticSearch索引返回最近的记录(前1个),类似于下面的sql查询; 能做到吗? 问题答案: 你有_timestamp在您的文档映射启用? 您可以在此处检查映射: 如果是这样,我认为这可能会获得最新的信息: