es~依賴包版本對索引初始化的影響

es依賴包我們通常指兩個org.elasticsearch:elasticsearchorg.elasticsearch.client:elasticsearch-rest-high-level-client,這兩個包的版本需要對應上,你的索引初始化才能生效,否則你在實體上添加的@Setting,@Mapping是不會生效的。

版本兼容

對於springboot2.2.6.RELEASE版本的spring-boot-starter-data-elasticsearch來說,我們選擇以下兩個版本的客戶端,是比較兼容的

  <dependency>
      <groupId>org.elasticsearch.client</groupId>
      <artifactId>elasticsearch-rest-high-level-client</artifactId>
      <version>6.5.4</version>
  </dependency>
  <!--  elasticsearch對應兼容版本爲6.8.7-->
  <dependency>
      <groupId>org.elasticsearch</groupId>
      <artifactId>elasticsearch</artifactId>
      <version>6.8.7</version>
  </dependency>

實體上添加初始化索引

  • es-mapping.json內容,確定了分片數據,副本數據,分頁數等
{
  "index": {
    // 分頁數
    "max_result_window": 1000000,
    // 分片數,30G一個片
    "number_of_shards": 10,
    // 副本
    "number_of_replicas": 1
  }
}
  • 實體EventRecord內容
@Document(indexName = "kc_event_logger")
@Setting(settingPath = "mapping/es-setting.json")
@Data
public class EventRecord implements Serializable {
}
  • 生成的索引也是沒有問題的

注意@Mapping(mappingPath = "mapping/es-mapping.json") 這個根據xml生成mapping的我測試總有問題,而且,使用上面的方法不需要你添加@Mapping了,因爲索引的mapping已經根據實體字段動態生成了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章