У меня есть 10 миллиардов данных, и теперь мне нужно разделить их на 12 индексов по месяцам, поэтому, если вы используете springboot + spring-boot-starter-data -asticsearch, @Document annotated indexName, шарды должны реализовать динамическое назначение,теперь indexName в порядке. Динамическое назначение, как показано в следующем коде:
@Bean
public DocumentConfig documentConfig() {
return new DocumentConfig();
}
@Document(
indexName = "#{documentConfig.getIndexName() ==
null?'jan':documentConfig.getIndexName()}",
type = "_doc",
shards = 3,
replicas = 1
)
и переключение индекса следующим образом:
documentConfig.setIndexName(name);
es.save(obj);
Но когда я создаю новый индекс, осколки становятсязначение по умолчанию 5. Когда я пытаюсь изменить его динамически, как в следующем коде, выдает ошибку: Несоответствие типов: невозможно преобразовать строковое значение в короткое
shards = "#{documentConfig.getShards() == null?
3:documentConfig.getShards()}"
Как с этим справиться?Спасибо