...
|
...
|
@@ -146,16 +146,21 @@ public class YohoIndexServiceImpl implements IYohoIndexService, ApplicationEvent |
|
|
*/
|
|
|
private int genNumberOfReplicas(IElasticsearchClient client, Map<String, String> indexSettings) {
|
|
|
try {
|
|
|
int numberOfDataNodes = client.getClusterHealthResponse().getNumberOfDataNodes();
|
|
|
if (numberOfDataNodes <= 1) {
|
|
|
//获取数据节点机器数
|
|
|
int dataNodesCount = client.getClusterHealthResponse().getNumberOfDataNodes();
|
|
|
if (dataNodesCount <= 1) {
|
|
|
return 0;
|
|
|
}
|
|
|
//获取配置的复制分片数
|
|
|
String numberOfReplicas = MapUtils.getString(indexSettings, "number_of_replicas");//配置的复制分片数
|
|
|
if (!"auto".equalsIgnoreCase(numberOfReplicas)) {
|
|
|
return Integer.valueOf(numberOfReplicas);
|
|
|
}
|
|
|
//获取索引配置的主分片数
|
|
|
return Math.max(1, numberOfDataNodes - 1);
|
|
|
// 获取配置的主分片数
|
|
|
int numberOfPrimary = MapUtils.getIntValue(indexSettings, "number_of_shards");//配置的主分片数
|
|
|
// 动态计算复制分片数【1个主分片就是机器数-1 , 4个主分片,4台机器就是 0,然后取1 】
|
|
|
int number_of_replicas = dataNodesCount/numberOfPrimary - 1;
|
|
|
return Math.max(1, number_of_replicas);
|
|
|
} catch (Exception e) {
|
|
|
INDEX_REBUILD_LOG.error(e.getMessage(), e);
|
|
|
return 0;
|
...
|
...
|
@@ -206,7 +211,7 @@ public class YohoIndexServiceImpl implements IYohoIndexService, ApplicationEvent |
|
|
indexSettings.put("merge.policy.expunge_deletes_allowed", 20d); // 删除了的文档数在一个segment里占的百分比,默认是10
|
|
|
indexSettings.put("merge.policy.floor_segment", "2mb"); // ES会避免产生很小size的segment,小于这个阈值的所有的非常小的segment都会做merge,默认是2MB.
|
|
|
indexSettings.put("merge.policy.max_merge_at_once", 10); // 一次最多只操作多少个segments,默认是10.
|
|
|
indexSettings.put("merge.policy.max_merged_segment", "2gb"); // 超过多大size的segment不会再做merge,默认是5g.
|
|
|
indexSettings.put("merge.policy.max_merged_segment", "500mb"); // 超过多大size的segment不会再做merge,默认是5g.
|
|
|
indexSettings.put("merge.policy.segments_per_tier", 10d); // 每个tier允许的segement 数,注意这个数要大于上面的at_once数,否则这个值会先于最大可操作数到达,就会立刻做merge,这样会造成频繁
|
|
|
|
|
|
client.createIndex(newRealIndexName, type, indexSettings, mappingContent);
|
...
|
...
|
|