ELASTICSEARCH集群几个注意点

1.如何集群

  • 找到instance\default\plugins\yigo-searchsoa-elasticsearch\elasticsearch.yml文件,属性cluster.name则在同一个网段下,会自动集群

2.如何判别不同服务器节点-node节点

  • elasticsearch.yml文件,属性node.name定义各自的服务器节点名

3.初始分片很重要

  • elasticsearch.yml文件,属性index.number_of_shards确定分片,默认是5,考虑到集群性能可以增加,但是一旦索引建立了,分片数量就再不能修改,至少在6.1前面无法更改

4.索引mapping的设置也是在索引数据一经创建后,就不可修改,不管是热修改(通过curl -post),还是冷修改(在yigo.json修改mapping属性)

  • 关于yigo.json#mapping属性参见 https://dev.bokesoft.com:9443/trac/ecomm/blog/xialj-elasticsearch
  • 关于通过curl修改mapping,可参考 http://www.cnblogs.com/zlslch/p/6474424.html
  • 关于通过curl修改mapping,需要注意,只能添加新的field字段,已有字段无法修改,参考http://www.cnblogs.com/Creator/p/3722408.html

5.索引数据的迁移

  • 索引数据可以创n个snapshot来做集群的迁移
  • 迁移步骤:
    1. 修改elasticsearch.yml文件,属性path.repo,指定镜像保存地址
    2. 创建snapshot库
         PUT _snapshot/my_backup 
         {
             "type": "fs", 
             "settings": {
                 "location": "/mount/backups/my_backup" 
             }
         }
      
    3. 创建snapshot
          PUT _snapshot/my_backup/snapshot_1
      
    4. 修改修改elasticsearch.yml文件,属性cluster.name指定新的集群
    5. 重复step2,3
    6. 创建索引(index),注意shards必须一致

 

  1. 创建完后,1.关闭index;2.restore;3.打开索引
        POST _snapshot/my_backup/snapshot_name/_restore
    

注意如果在集群的情况下做repo-snapshot需要注意以下几点:

  1. 所有的elasticsearch服务器的elasticsearch.yml中path.repo都必填,且地址应该相同,即服务器A和服务器B都应该是/tmp/snapshot这样,对于windows系统则统一D:/test/snapshot
  2. 指定的地址必须机器之间都可访问,linux服务器使用sshfs或者nfs这2个不需要验证的远程mount;windows服务器使用共享文件夹,映射网络驱动器,mklink指令来做
  • windows的方案
    • 服务器A,指定某个文件夹D:\test\snapshot共享,权限是everyone,同时被elasticsearch.ymlpath.repo指定
    • 服务器B,通过映射网络驱动器,指向共享的文件夹,指定为z盘符[z:\]
    • 通过cmd指令mklink:mklink /d D:\test\snapshot z:\
    • elasticsearch.ymlpath.repo指定D:\test\snapshot
  • 索引迁移参考资料
    • ​https://www.elastic.co/guide/en/elasticsearch/guide/current/backing-up-your-cluster.html
    • ​http://blog.csdn.net/u014431852/article/details/52905821

你可能感兴趣的:(elasticsearch)