请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

es中修改索引文档问题

老师,你好:
1、es中是不建议修改索引结构?还是不建议修改文档内容而要删除再新增? 数据到后期,索引中已经有一定的数据量了,这个时候修改字段类型之类的可以吗? 如果不建议修改文档内容(因为存入的文本已经经过分词及算分了)的话而删除后再新增的话,如果修改的是索引中不需要分词(比如keyword类型)的字段文本呢?是否可以直接修改?

2、已经有一定数量文档的索引,后期是否可以像mysql那样灵活的添加字段呢(不是dynamic属性问题)? 并且我需要用到这个字段来进行分词搜索

谢谢!

正在回答

1回答

  1. es 的数据模型是自由的,可以随时修改 mapping 组成,但是不能改数据类型。修改是 update 操作,这个操作执行的时候会重新执行分词的操作。而 update 的原理也是先拿到整个文档,修改你要改的字段,然后整个文档 update。

  2. 2.可以灵活添加。

    针对字段更改问题,可以结合 alias 和 reindex 来灵活处理

0 回复 有任何疑惑可以回复我~
  • 提问者 simons_fan #1
    意思是,比如我想修改索引里的某条文档数据里的内容,可以直接update,而不需要先删除,再新增的形式吗?
    回复 有任何疑惑可以回复我~ 2019-01-23 11:01:23
  • rockybean 回复 提问者 simons_fan #2
    是的,不用删除。es 内部就是把旧文档标记为删除,然后使用新文档的机制,有一个版本号的概念在里面
    回复 有任何疑惑可以回复我~ 2019-01-24 21:17:11
  • 提问者 simons_fan 回复 rockybean #3
    那修改的话,之前经过分词后的文本会受到影响吗?  修改后的文档是不是会自动对新文档进行分词啊?
    回复 有任何疑惑可以回复我~ 2019-01-25 14:55:24
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信