首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elasticsearch高效索引管理

Elasticsearch高效索引管理
EN

Stack Overflow用户
提问于 2015-08-19 22:15:45
回答 1查看 706关注 0票数 2

我正在以一种非典型的方式使用Elasticsearch,并希望对这种搜索的效率有多高的看法。

我创建和完整的"docs“集,每个字段都有几个字段。我在星火中作为MapString的RDD来做这件事。然后,我经常用潜在的新数据覆盖索引。我怀疑更典型的方法是一次更新或添加一个文档。我使用Elasticsearch支持执行此操作,其中包括:

代码语言:javascript
复制
val docsRDD: RDD[Map[String, Any]] = getDocs()
docsRDD.saveToEs(esIndexURI, Map("es.mapping.id" -> "id"))

我已经在两个工作流中完成了这一工作,并且希望知道它们的权衡。

  1. 删除索引,创建 it,编写 it,然后刷新使索引可用。这是因为,据我所知,在刷新之前,索引不会被真正删除,这将像对旧的新索引进行热交换。换句话说,Elasticsearch在后台工作,然后在刷新时在新的新索引中交换。
  2. 用没有删除/创建/刷新的火花代码覆盖索引。

起初,我正在更新文档,但事实证明这是不切实际的,而星火的支持似乎表明了即时写作的方法。这两种方法似乎都有效,但我现在有了一个小数据集,我想知道不同的方法(或其他建议)如何影响:

  • 操作期间的查询性能
  • 再索引速度
  • 指数的一致性。第二种方法是用部分更新创建索引,这样查询将针对不完整的更新吗?#1是否导致索引在一段时间内不可用?
EN

回答 1

Stack Overflow用户

发布于 2015-08-20 03:36:22

第三个选项:首先为当前索引分配别名,并通过该别名进行地址搜索,而不是直接搜索索引。在更新/重建索引时,用最新的数据编写一个全新的索引,不要覆盖或删除/重建当前的索引。生成新索引后,将别名分配给它,并从旧索引中删除它。为更新的索引分配别名后,删除/存档/任何旧索引。根据需要重复后续索引重建。

完成您所需要的,在新的索引版本正在构建时,不会干扰当前索引版本的读取,并且不依赖时间/运气来保持删除索引的可搜索性。当然,它需要有足够的存储空间来存储两个版本的索引。

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

https://stackoverflow.com/questions/32106538

复制
相关文章

相似问题

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