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