在Elasticsearch中更改设置的最佳解决方案

崔定慧

我有2个question已建立索引:FIRE_DETECTED并且SMOKE:DETECTED在Elasticsearch中

目标

我想搜索query = 'fire'->结果:FIRE_DETECTED

query = 'dectected'->结果:FIRE_DETECTEDSMOKE:DETECTED

一些解决方案

  1. 在分析仪中添加更多设置
  • 我们需要创建新设置的新指数(添加令牌过滤器:word_delimiter_graph
  • 重新索引
  • 问题:如何在不影响客户的情况下在生产中添加设置?
  1. 在Elasticsearch中再添加1个字段 filterd_question
  • 使用:分割数据_
  • 将拆分的数据保存在此filterd_question字段中
  • 问题:我们还需要1个字段

最好的解决方案是什么?(如果需要,添加更多解决方案)

Elasticsearch忍者

同样,在使用Elasticsearch时这确实是一个很好且非常常见的场景,并且随着需求不断变化,并且为了支持它们,我们必须更改在ES中索引数据的方式。

您提到的两种方法都被公司使用,它们都有自己的传球,您必须根据自己的要求选择一种方法。

更改/添加分析仪将需要执行以下步骤才能使其工作:

  1. 关闭索引
  2. 添加/编辑分析仪定义。
  3. 打开索引
  4. 重新索引所有文档(您应该使用零停机时间索引别名来有效地做到这一点,并最大程度地减少对最终用户的影响)
  5. 在执行第4步之后,您的新搜索将起作用。

优点:它不会创建新字段,因此可以节省空间,因此可以更有效,更干净地进行此更改。

缺点是,根据文档数量及其相对复杂的过程,重新索引可能会花费大量时间。

添加一个自定义分析器,然后使用新添加的分析器添加一个新字段

在这种情况下,除非您使用内置分析器,否则还需要关闭/打开索引,但是在这种情况下,您的新文档或正在更新的文档将具有新字段,因此根据新的分析器/逻辑进行搜索会带来部分结果,但这可以根据您的用例而定。

优点:相对简单的方法,在所有情况下都不需要完全重新索引。

缺点:如果不使用旧字段并且复杂性会根据使用情况而有所不同,则会有额外的空间。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

网页中水平对齐的最佳解决方案?

来自分类Dev

在HaxeFlixel中编码资产的最佳解决方案

来自分类Dev

控制访问StrongLoop中模型的最佳解决方案

来自分类Dev

Java中模拟链接调用的最佳解决方案

来自分类Dev

在 JavaScript 中创建“运行循环”的最佳解决方案

来自分类Dev

“名人”算法的最佳解决方案

来自分类Dev

WebSocket:后端的最佳解决方案

来自分类Dev

尝试最佳解决方案?

来自分类Dev

字谜检查的最佳解决方案?

来自分类Dev

背包最佳解决方案(蛮力)

来自分类Dev

寻找最佳解决方案

来自分类Dev

忽略maxLength的最佳解决方案

来自分类Dev

级联IF语句-最佳解决方案

来自分类Dev

用仇恨词过滤掉Elasticsearch结果的最佳解决方案是什么?

来自分类Dev

用仇恨词过滤掉Elasticsearch结果的最佳解决方案是什么?

来自分类Dev

无限循环是基于目录中文件更改进行处理的最佳解决方案

来自分类Dev

XSRF / CSRF安全REST呼叫的最佳解决方案?

来自分类Dev

jQuery“窗帘”功能-最佳解决方案?

来自分类Dev

托管搜寻器的最佳解决方案?

来自分类Dev

最大单笔销售利润算法的最佳解决方案

来自分类Dev

使用nloptr查找N个最佳解决方案

来自分类Dev

物体可以被处置多次-最佳解决方案

来自分类Dev

爱丽丝·鲍勃硬币的最佳解决方案

来自分类Dev

在iCloud上保存游戏进度:最佳解决方案?

来自分类Dev

多线程网络刮板的最佳解决方案?

来自分类Dev

插入时需要mysql事件的最佳解决方案?

来自分类Dev

Android REST客户端:最佳解决方案?

来自分类Dev

找出最佳解决方案的数据结构

来自分类Dev

iOS 9解析JSON的最佳解决方案

Related 相关文章

热门标签

归档