ElasticSearch Java API 与 ElasticsearchTemplate
ElasticSearch Java API vs ElasticsearchTemplate
使用 ElasticSearchTemplate
我可以轻松地从一个简单的实体创建索引 class。假设我要保存 Book.java:
@Document(indexName = "bookshop", type = "book", shards = 2, replicas = 2, refreshInterval = "-1")
public class Book {
@Id
private String id;
@Field(type = FieldType.String, store = true)
private String title;
}
这就足够了:
elasticsearchTemplate.createIndex(Book.class);
elasticsearchTemplate.putMapping(Book.class);
elasticsearchTemplate.refresh(Book.class);
这可以用纯 ES Java API 实现,而没有 spring-data-elasticsearch
和字符串操作(JSON)吗?
其实JavaAPI需要JSON但是有EShelpers所以代码可以如下:
CreateIndexResponse createIndexRequestBuilder = client().admin().indices()
.prepareCreate(INDEX_NAME)
.setSource(XContentFactory.jsonBuilder()
.startObject()
.field("title", "My Title 1")
.endObject()
)
.setSettings(
Settings.settingsBuilder()
.put("index.number_of_shards", 2)
.put("index.number_of_replicas", 2)
)
.execute()
.actionGet();
使用 ElasticSearchTemplate
我可以轻松地从一个简单的实体创建索引 class。假设我要保存 Book.java:
@Document(indexName = "bookshop", type = "book", shards = 2, replicas = 2, refreshInterval = "-1")
public class Book {
@Id
private String id;
@Field(type = FieldType.String, store = true)
private String title;
}
这就足够了:
elasticsearchTemplate.createIndex(Book.class);
elasticsearchTemplate.putMapping(Book.class);
elasticsearchTemplate.refresh(Book.class);
这可以用纯 ES Java API 实现,而没有 spring-data-elasticsearch
和字符串操作(JSON)吗?
其实JavaAPI需要JSON但是有EShelpers所以代码可以如下:
CreateIndexResponse createIndexRequestBuilder = client().admin().indices()
.prepareCreate(INDEX_NAME)
.setSource(XContentFactory.jsonBuilder()
.startObject()
.field("title", "My Title 1")
.endObject()
)
.setSettings(
Settings.settingsBuilder()
.put("index.number_of_shards", 2)
.put("index.number_of_replicas", 2)
)
.execute()
.actionGet();