如何解决在Elasticsearch中更改设置的最佳解决方案
我有2个question
的索引分别为:Elasticsearch中的FIRE_DETECTED
和SMOKE:DETECTED
目标
我要搜索query = 'fire'
->结果:FIRE_DETECTED
query = 'dectected'
->结果:FIRE_DETECTED
和SMOKE:DETECTED
某些解决方案
- 在分析仪中添加更多设置
- 再向Elasticsearch
filterd_question
添加1个字段
- 使用
:
和_
拆分数据 - 在此
filterd_question
字段中保存拆分的数据 - 问题:我们还需要1个字段
解决方法
同样,在使用Elasticsearch时这确实是一种非常常见的情况,并且随着需求不断变化,并且为了支持这些变化,我们必须更改在ES中索引数据的方式。
您提到的两种方法都是公司使用的,它们都有自己的传统,您必须根据自己的要求选择一种。
更改/添加分析仪将需要执行以下步骤才能使其工作:
- 关闭索引
- 添加/编辑分析仪定义。
- 打开索引
- 为所有文档重新编制索引(您应该使用index alias with zero down time来有效地做到这一点,并将对最终用户的影响降到最低)
- 在第4步之后,您的新搜索将起作用。
优点:它不会创建新字段,因此可以节省空间,因此可以更有效,更干净地进行此更改。
基于文档的数量及其相对复杂的过程,重新索引可能会花费大量时间。
添加自定义分析器,然后使用新添加的分析器添加新字段
在这种情况下,除非您使用内置分析器,否则还需要关闭/打开索引,但是在这种情况下,您的新文档或正在更新的文档将具有新的字段,因此您需要根据新的分析器进行搜索/ logic将带来部分结果,但这可以根据您的用例而定。
优点:相对简单的方法,不需要在所有情况下都进行完全重新索引。
缺点:如果不使用旧字段并且复杂度根据用例而有所不同,则会有额外的空间。
,如果您不想更改/添加分析仪。您可以尝试使用通配符查询。尽管缺点是性能。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。