0、引言
看着这个标题就好吓人,这个重建索引是建立在Lucene实现的倒排索引的原则上的,而我们的每一个查询又都是建立在倒排索引上面的,因此稳定的链条产生了:
mapping –》写入数据–》数据根据分词器生成倒排索引–》索引待查询
1、重建索引
当我们有了了解:mapping 数据存储后,倒排索引就生成了这个概念之后,那么我们很清晰了这样一个图:
2、重建索引场景
情况一:某一天,突然我们的搜索引擎需要加一个字段,而且这个字段是需要直接做分词的,此时我们就要重建索引了。
原因一:需要新加一列
原因二:新加的列需要做分词
情况二:分词器自定义词库扩展
原因一:每一个使用分词器分完的词均进入了倒排索引,我们更新了自定义词库,则老的文本就使用不了新的自定义词库作为关键字查询。
情况三:修改新的分词器
原因一:修改分词器后,查询词就会按照新的分词器分词,与老的倒排索引里面的词肯定不一致
原因二:修改了分词器后,mapping肯定是要修改的吧
3、动态重建索引
PUT http://192.168.159.159:9200/index1
{
"settings": {
"refresh_interval": "5s",
"number_of_shards" : 1, // 一个主节点
"number_of_replicas" : 0 // 0个副本,后面可以加
},
"mappings": {
"_default_":{
"_all": { "enabled": false } // 关闭_all字段,因为我们只搜索title字段
},
"resource": {
"dynamic": false, // 关闭“动态修改索引”
"properties": {
"title": {
"type": "string",
"index": "analyzed",
"fields": {
"cn": {
"type": "string",
"analyzer": "ik"
},
"en": {
"type": "string",
"analyzer": "english"
}
}
}
}
}
}
}
resource:dynamic
这里面貌似有解决办法,但是我没尝试【基本解决办法还是重新加载数据】:http://laijianfeng.org/2018/08/Elasticsearch-6-x-Mapping%E8%AE%BE%E7%BD%AE/
参考来源:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/160915.html