首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elasticsearch重新索引所有vs join

Elasticsearch重新索引所有vs join
EN

Stack Overflow用户
提问于 2022-05-01 14:23:18
回答 1查看 25关注 0票数 0

我对Elasticsearch和它的所有概念都很陌生。我想了解如何在Elasticsearch体系结构中实现关系数据库中的功能。

方案如下:

我有一个索引“数据”:

代码语言:javascript
复制
{
   "id": "00001",
   "content" : "some text here ..",
   "type": "T1",
   "categories: ["A", "A1", "B"]
}

该要求规定,可以通过以下方式查询数据:

  • 属于特定类型或类别

的上下文字段

  • 中的一些文本搜索

到目前为止,很简单,很好。

此数据将不会从创建时完成。以后可能会向数据中添加/删除新的类别。因此,许多数据上传/重新索引可能会在此过程中发生。

例如:

创建数据

代码语言:javascript
复制
{
   "id": "00001",
   "content" : "some text here ..",
   "type": "T1",
   "categories: ["A"]
}

然后,决定了type=T1的所有数据必须同时属于A&B两类。

代码语言:javascript
复制
{
   "id": "00001",
   "content" : "some text here ..",
   "type": "T1",
   "categories: ["A", "B"]
}

如果我对type=T1有10亿次点击,我将不得不更新/重新索引10亿个条目。也许这就是事情应该如何运作,而这正是我的问题所在。

是否可以仅仅为了添加/删除一个新的类别而重新索引所有数据,或者是否可以有第二个小得多的索引来完成这个关联,并以某种方式将两个索引连接起来进行查询?

就像这样:

数据:

代码语言:javascript
复制
{
   "id": "00001",
   "content" : "some text here ..",
   "type": "T1"
}

DataCategories:

代码语言:javascript
复制
{
   "type": "T1"
   "categories" : ["A", "B"]
}

这可以接受/可能吗?

EN

回答 1

Stack Overflow用户

发布于 2022-05-01 15:44:14

这是一个常见的场景--但不幸的是,在Lucene/elasticsearch这样的文本搜索引擎中,RDBMS功能没有1:1的映射。

可能的备选方案:

为了获得最好的表现,重新编制索引。这可能是不切实际的,取决于你的变化速度。

2-考虑父母-孩子;虽然这是一个较慢的选择-通常会满足性能要求。这个类别可以是一个父文档,每个文档都有数千个子文档。

3-如果其类别重命名--考虑对类别使用in并将其翻译为应用程序中的文本。

更新文档取决于要更新的文档的数量;如果更多地重新索引,则可能对几千个更新查询运行更新查询。

建议阅读- https://www.elastic.co/blog/managing-relations-inside-elasticsearch

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72077546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档