Summary
This article details the complete flow for index and document CRUD operations using Elasticsearch 7.3.0 and RestHighLevelClient.
1. Version Matrix
| Component | Version | Note |
|---|---|---|
| Elasticsearch Server | 7.3.0 | Code examples based on this version |
| Rest High Level Client | 7.3.0 | Match with server version |
| Java | 17 | maven.compiler.source/target=17 |
2. Maven Dependencies Config
<dependencies>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.3.0</version>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>7.3.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
3. Create RestHighLevelClient
RestClientBuilder builder = RestClient.builder(
new HttpHost("h121.wzk.icu", 9200, "http"),
new HttpHost("h122.wzk.icu", 9200, "http"),
new HttpHost("h123.wzk.icu", 9200, "http")
);
RestHighLevelClient client = new RestHighLevelClient(builder);
4. Index Operations
4.1 Create Index (JSON Way)
CreateIndexRequest indexRequest = new CreateIndexRequest("wzk-icu-es-test");
String mapping = "{\"settings\":{},\"mappings\":{\"properties\":{\"description\":{\"type\":\"text\",\"analyzer\":\"ik_max_word\"},\"name\":{\"type\":\"text\"}}}}";
indexRequest.source(mapping, XContentType.JSON);
CreateIndexResponse indexResponse = client.indices().create(indexRequest, RequestOptions.DEFAULT);
4.2 Create Index (Object Way)
CreateIndexRequest createIndexRequest = new CreateIndexRequest("wzk-icu-es-2");
createIndexRequest.settings(Settings.builder()
.put("index.number_of_shards", 5)
.put("index.number_of_replicas", 1)
.build());
XContentBuilder xContentBuilder = XContentFactory.jsonBuilder();
xContentBuilder.startObject();
xContentBuilder.startObject("properties");
xContentBuilder.startObject("description").field("type", "text").field("analyzer", "ik_max_word").endObject();
xContentBuilder.endObject();
xContentBuilder.endObject();
createIndexRequest.mapping(xContentBuilder);
4.3 Delete Index
DeleteIndexRequest deleteRequest = new DeleteIndexRequest("wzk-icu-es-test");
AcknowledgedResponse deleteResponse = client.indices().delete(deleteRequest, RequestOptions.DEFAULT);
5. Document Operations
5.1 Add Document
IndexRequest indexRequest = new IndexRequest("wzk-icu-es-2").id("1");
String str = "{\"name\":\"spark添加文档\",\"description\":\"spark技术栈\",\"studymodel\":\"online\"}";
indexRequest.source(str, XContentType.JSON);
IndexResponse index = client.index(indexRequest, RequestOptions.DEFAULT);
5.2 Query Document
GetRequest getRequest = new GetRequest("wzk-icu-es-2");
getRequest.id("1");
GetResponse getResponse = client.get(getRequest, RequestOptions.DEFAULT);
Map<String, Object> sourceMap = getResponse.getSourceAsMap();
5.3 Query All Documents
SearchRequest searchRequest = new SearchRequest();
searchRequest.indices("wzk-icu-es-2");
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(QueryBuilders.matchAllQuery());
searchRequest.source(sourceBuilder);
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
SearchHits hits = searchResponse.getHits();
for (SearchHit sh : hits.getHits()) {
Map<String, Object> map = sh.getSourceAsMap();
}
6. Error Quick Reference
| Symptom | Root Cause | Fix |
|---|---|---|
| Connection refused | ES node address config wrong | Check HttpHost address and port |
| Index already exists | Creating same name index repeatedly | First execute indices().exists check |
| Mapping parsing exception | JSON structure syntax error | Use online JSON validation tool |
| Search result empty | Tokenizer config improper | Check analyzer config |
7. Summary
This article provides complete CRUD tutorial for Elasticsearch 7.3 Java API, including:
- Maven dependencies config
- RestHighLevelClient initialization
- Index creation and deletion
- Document CRUD
- Common error troubleshooting guide
Suitable for developers who need to maintain ES7 systems for reference and learning.