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

在ElasticSearch中,我应该为单独但相关的实体使用多个索引吗?

薛欣德
2023-03-14
问题内容

添加索引的开销有据可查,但是我无法找到有关何时使用各种索引的各种信息,这些信息与要建立索引的各种文档类型有关。

这是一个通用示例来说明问题:

说我们有以下实体

  • 产品(名称,ProductID,ProductCategoryID,商店列表)
  • 产品类别(名称,ProductCategoryID)
  • 商店(名称,商店ID)

我是否应该将这三种不同类型的文档转储到一个索引中,每个索引都具有适当的名称elasticsearch type

我很难确定在一个索引与多个索引之间划清界限的位置。

如果我们添加不相关的实体“网页”,该怎么办。绝对是一个单独的索引?


问题答案:

最近,我从头开始对ElasticSearch后端进行建模,从我的角度来看,最好的选择是将所有相关文档类型放在同一索引中。

我读到有些人并发索引过多(每种类型1个索引)存在问题。在同一索引中统一相关类型的性能和健壮性更好。

此外,如果类型在同一索引中,则可以使用“
_parent ”字段创建层次结构模型,这些模型允许您将有趣的特征搜索为“
has_child ”和“
has_parent ”,当然您不必在模型中重复数据




 类似资料:
  • 我是否需要为我的复杂Web应用程序使用单独的Docker容器,或者我可以将所有必需的服务放在一个容器中?有人能解释一下为什么我应该将我的应用程序划分为许多容器(例如容器,容器,容器)当我能够在一个容器中安装和启动所有东西时?

  • 我写了以下代码: 我只使用了一个useState在一个对象中存储“name”、“link”、“error”等属性。因为我想将FormObj和ValidateLink的逻辑保持在一起。所有三个属性仅使用一个useEffect。因此,我认为最好将所有三个属性都保留在useState中,而不是创建3个不同的useState。 但是我的经理和技术架构师告诉我要为每个属性创建3个useState,一个use

  • 我的程序使用Java脚本API,可以同时评估一些脚本。它们不使用共享脚本对象、绑定或上下文,但可以使用相同的和对象。我发现Java8中的OracleNashorn实现不是多线程的,返回,文档中说: 引擎实现不是线程安全的,不能用于在多个线程上并发执行脚本。 这是否意味着我应该为每个线程创建一个单独的实例?此外,文档中没有提到并发使用,而是: 每个已编译脚本都与一个脚本引擎相关联 可以假设线程安全依

  • 问题内容: 我在同一台Ubuntu服务器上有一个Rails 3应用程序的暂存和生产实例(使用tyre gem)。看来这两个实例都共享相同的elasticsearch索引,这显然不是我想要的。 如何使生产和登台实例使用单独的实例? 问题答案: 您需要覆盖索引名称。假设您要绑定ActiveRecord,它将根据相关模型创建索引名称。您可以使用这样的前缀来调整名称; 然后会创建一个名为的索引,以此类推。

  • 我试着在本地写文件,这是工作良好的....可能是配置中的问题。 这些是pom.xml中的依赖项

  • 问题内容: 我打算使用Kubernetes和Ingress进行负载平衡。我正在尝试学习如何设置Flask,uWSGI和Nginx。我看到本教程将所有三个安装在同一容器中,我想知道是否应该使用它。 https://ianlondon.github.io/blog/deploy-flask-docker- nginx/ 我猜测将它们作为单独的容器和单独的容器的好处是它们可以分别进行单独缩放? 但是,F