Elasticsearch之重建索引

不管现实多么惨不忍睹,都要持之以恒地相信,这只是黎明前短暂的黑暗而已。不要惶恐眼前的难关迈不过去,不要担心此刻的付出没有回报,别再花时间等待天降好运。真诚做人,努力做事!你想要的,岁月都会给你。Elasticsearch之重建索引,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

0、引言

看着这个标题就好吓人,这个重建索引是建立在Lucene实现的倒排索引的原则上的,而我们的每一个查询又都是建立在倒排索引上面的,因此稳定的链条产生了:

mapping –》写入数据–》数据根据分词器生成倒排索引–》索引待查询

1、重建索引

当我们有了了解:mapping 数据存储后,倒排索引就生成了这个概念之后,那么我们很清晰了这样一个图:

Elasticsearch之重建索引实际解释成如下图:Elasticsearch之重建索引

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

Elasticsearch之重建索引

这里面貌似有解决办法,但是我没尝试【基本解决办法还是重新加载数据】:http://laijianfeng.org/2018/08/Elasticsearch-6-x-Mapping%E8%AE%BE%E7%BD%AE/

参考来源:

为Elasticsearch添加中文分词,对比分词器效果

Elasticsearch-6-x-Mapping设置

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/160915.html

(1)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!