我正在以一种非典型的方式使用Elasticsearch,并希望对这种搜索的效率有多高的看法。
我创建和完整的"docs“集,每个字段都有几个字段。我在星火中作为MapString的RDD来做这件事。然后,我经常用潜在的新数据覆盖索引。我怀疑更典型的方法是一次更新或添加一个文档。我使用Elasticsearch支持执行此操作,其中包括:
val docsRDD: RDD[Map[String, Any]] = getDocs()
docsRDD.saveToEs(esIndexURI, Map("es.mapping.id" -> "id"))我已经在两个工作流中完成了这一工作,并且希望知道它们的权衡。
起初,我正在更新文档,但事实证明这是不切实际的,而星火的支持似乎表明了即时写作的方法。这两种方法似乎都有效,但我现在有了一个小数据集,我想知道不同的方法(或其他建议)如何影响:
发布于 2015-08-20 03:36:22
第三个选项:首先为当前索引分配别名,并通过该别名进行地址搜索,而不是直接搜索索引。在更新/重建索引时,用最新的数据编写一个全新的索引,不要覆盖或删除/重建当前的索引。生成新索引后,将别名分配给它,并从旧索引中删除它。为更新的索引分配别名后,删除/存档/任何旧索引。根据需要重复后续索引重建。
完成您所需要的,在新的索引版本正在构建时,不会干扰当前索引版本的读取,并且不依赖时间/运气来保持删除索引的可搜索性。当然,它需要有足够的存储空间来存储两个版本的索引。
https://stackoverflow.com/questions/32106538
复制相似问题