同福

Elasticsearch引擎的索引数据的完全导出/导入(包括mapping、setting、alias、routing)【20210705】

介绍

介绍

福哥今天要带着大家学习Elasticsearch搜索引擎的索引数据的导出/导入功能,因为ES搜索引擎的包括很多功能,如果要保留全部索引的配置和数据的话,还是需要对ES的功能有一定的了解才可以做到的。

mapping

ES索引可以直接添加数据,但是默认情况下会将所有非数字的字段都做完文本(text)来对待,如果要根据字段类型进行特别定制的话,需要用到ES的mapping功能去设置字段类型。

setting

ES索引可以设置分词词库,如果没有设置的话,就会使用默认的词库进行匹配。默认的词库对中文支持不是很好,它会把汉字拆分成一个一个的单独的字去匹配。如果要设置自己的分词词库就要用到ES的setting功能。

alias

ES索引建立之后字段就不能增减了,要想修改只有新建一个新的索引一个方法,但是这势必会影响服务的正常使用,为了解决这个问题可以通过alias去快速地给新索引建立一个别名,因为建立别名的速度很快可以最大限度地规避服务中断的可能。

routing

ES索引的数据的存储规则是平均写入到每一个分片里面,这样做的好处是如果一个分片出现故障不会导致索引数据完全丢失的严重事故。但是有些时候我们希望一类数据存储到一个分片里面,这样可以提高检索速度。这个时候就可以提高routing功能来强制数据存储到同一个分片上面。

导出

mapping

使用_mapping参数获得索引的mapping信息。

curl 'http://elasticsearch:9200/tfams/_mapping?pretty=true'

home/topic/2021/0706/16/1f46c9eca93f1026ebe7f99b33c79dd8.png

setting

使用_setting参数获得索引的setting信息,红圈内容是系统自动生成的需要去掉。

curl 'http://elasticsearch:9200/tfams/_settings?pretty=true'

home/topic/2021/0706/16/489e5d9aab451d30bdb204e38d9500bd.png

alias

使用_alias参数获得索引的别名信息。

curl 'http://elasticsearch:9200/tfams/_alias?pretty=true'

home/topic/2021/0706/16/47133b0cbbe0c2da882c9eebb3779e87.png

routing

每个索引都有可能设置routing信息,导出的时候除了_id和_source之外,还需要带上_routing(如果有的话)。

home/topic/2021/0706/17/2fc22a30806947a961cdd752f8ad743d.png

导入

创建索引

导入mapping和setting只能在创建索引的时候设置,语法如下:

PUT /tfams

{
  "settings": {
    "number_of_shards": 6,
    "number_of_replicas": 0
  },
  "mappings": {
    "tfams": {
      "properties": {
        "mTitle": {
          "type": "text",
          "analyzer": "ik_smart",
          "search_analyzer": "ik_smart"
        },
      }
    }
  }
}

导入别名

导入别名直接网根目录的别名里面导入即可,自己拼接JSON数据。

POST /aliases

{
  "actions": [
    {
      "add": {
        "index": "tfams",
        "alias": "tfams_1"
      }
    }
  ]
}

导入数据

导入数据就是一行数据头信息,一行数据源信息。

数据头

{"_index": "tfams", "_type": "tfams", "_routing": 35}

数据源

{"mId": "512801", "mTitle": "【20201008】Python操作ElasticSearch搜索引擎"}

总结

福哥今天教给大家如何导出ES引擎里的索引的全部配置和数据的方法,这里面包括索引的mapping、setting、alias和routing信息。