我已安装了一个包含三个节点的弹性搜索群集,我假装用于搜索电子邮件。
在我的平台上,我每月会收到40k邮件。所以我的问题是如何在ElasticSearch上定义分片数和副本号?
该措施是否有最佳做法?
提前致谢。
答案 0 :(得分:0)
您可以在elasticsearch.yml文件中或为索引创建模板时定义它。
答案 1 :(得分:0)
最好的方法是每个时间段有一个索引,比如每月或每周一个索引。这将有所帮助,因为一旦创建了索引,我们就无法增加每个索引的分片数。
现在您需要定义将来要创建的索引的maping和设置。因此,您需要定义一个index template,然后再定义这些。
最佳做法是在模板中定义分片编号和副本编号。
以下是一个示例模板,该模板将应用于未创建且名称以te开头的任何索引。
curl -XPUT localhost:9200/_template/te_prefix -d '{
"template" : "te*",
"settings" : {
"number_of_shards" : 3,
"number_of_replicas" : 1
},
"mappings" : {
"_default_" : {
"_all" : { "enabled" : false }
}
}
}'
或者,如果您只想创建一个索引和设置,可以使用以下方法 - 索引名称是统计数据。
curl -X PUT "http://localhost/stats" -d '{
"settings": {
"index": {
"number_of_shards": 1,
"number_of_replicas": 1
},
"analysis": {
"analyzer": {
"flat": {
"type": "custom",
"tokenizer": "keyword",
"filter": "lowercase"
}
}
}
},
"mappings": {
"stats": {
"properties": {
"DocCount": {
"type": "long"
},
"Query": {
"type": "string",
"analyzer": "flat"
},
"ResponseTime": {
"type": "long"
}
}
}
}
}'