当前位置:首页 » 其他

elasticsearch 集群配置

2016-03-08 10:44 本站整理 浏览(8)

elasticsearch以集群配置的简便、搜索性能、分布式存储吸引这不少用户。不过通过晚上看到应用方案大都是ELK日志分析的方案。但我们在开发中使用es做查询和存储操作。日订单量在25w左右。四台内存12G 硬盘60G的虚拟机搭建的集群。业务需要查询全部订单。

看一下我们集群的具体配置: elasticsearch.yml

基础的基础群名和节点名称。根据自己机器的划分命名就可以。

cluster.name: eb_es_cluster

node.name: "eb_es_node1"

 

内存设置:

使用mlockall在Linux / Unix系统上,或者VirtualLock在Windows上,试图锁进程地址空间到RAM中,防止任何Elasticsearch内存被换出

bootstrap.mlockall: true

3、把多点 传播关掉。防止在同局域网内。有节点自动加入集群。

discovery.zen.ping.multicast.enabled: false

discovery.zen.ping.multicast.ping.enabled: false

4、打开单一传播指定集群内。所有机器的IP和端口。只有在配置内的ip和端口的节点才能加入集群。

discovery.zen.ping.unicast.enabled: true

discovery.zen.ping.unicast.hosts: ["ip:端口", "ip:端口"]

5、很多时候把自动创建索引去掉,但是你如果安装了其他的插件。需要创建一些索引数据。如果直接设置为false。会导致报错。所以我们可以通过一下配置。一下配置的使用+号可以增加正则匹配。

+.marvel* :允许.marvel开头的索引名称的创建。

-*:所有名称的索引都不能创建。

然后以逗号分割。前面的配置优先后面的配置。

action.auto_create_index: +.marvel*,-*

6、这个配置是对索引创建时生成的index.mapping文件的设置。不让自动创建mapping文件。这点好处就是你在使用字段时。能明确知道字段的类型。所有创建的时候可以在 config/mappings/index名称/type.mapping配置。

{
  "dynamic_date_formats": [
    "yyyy-MM-dd",
    "yyyy-MM-dd HH:mm:ss",
    "date_optional_time"
  ],
  "dynamic": "false",
  "_all":{"enabled":false},
  "properties": {
    "orderChannel": {
      "type": "integer"
    },
    "priceAmount": {
      "type": "double"
    },
    "orderFlag": {
      "type": "integer"
    }
  }
}
 

index.mapper.dynamic: false