一。创建索引和添加mapping(一般由运维建立,java中不用像测试方法中那样麻烦的去写,一般就复制方式一):
1.启动类
@SpringBootApplication
public class EstestApplication {
public static void main(String[] args) {
SpringApplication.run(EstestApplication.class, args);
}
@Value("${es.host}")
String host;
@Value("${es.port}")
int port;
@Bean
public RestHighLevelClient client(){
return new RestHighLevelClient(RestClient.builder(new HttpHost(host,port,"http")));
}
}
2.yml
es:
host: localhost
port: 9200
3.测试方法
@Test
public void testCreateIndexAndMapping() throws IOException {
CreateIndexRequest createIndexRequest = new CreateIndexRequest("person3");
XContentBuilder xContentBuilder = XContentFactory.jsonBuilder();
xContentBuilder.startObject();
xContentBuilder.startObject("properties");
xContentBuilder.startObject("name");
xContentBuilder.field("type","text");
xContentBuilder.endObject();
xContentBuilder.startObject("age");
xContentBuilder.field("type","text");
xContentBuilder.endObject();
xContentBuilder.endObject();
xContentBuilder.endObject();
createIndexRequest.mapping(xContentBuilder);
CreateIndexResponse createIndexResponse = client.indices().create(createIndexRequest, RequestOptions.DEFAULT);
boolean acknowledged = createIndexResponse.isAcknowledged();
System.out.println(acknowledged);
boolean shardsAcknowledged = createIndexResponse.isShardsAcknowledged();
System.out.println(shardsAcknowledged);
String index = createIndexResponse.index();
System.out.println(index);
}
二。查询
测试方法(其他配置同上)
@Test
public void testGetIndex() throws IOException {
GetIndexRequest getIndexRequest = new GetIndexRequest("person4");
GetIndexResponse getIndexResponse = client.indices().get(getIndexRequest, RequestOptions.DEFAULT);
Map<String, MappingMetadata> mappings = getIndexResponse.getMappings();
MappingMetadata person4 = mappings.get("person4");
Map<String, Object> sourceAsMap = person4.getSourceAsMap();
System.out.println(sourceAsMap);
}
三。修改(一般不做修改)
四。删除
@Test
public void testDeleteIndex() throws IOException {
DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest("person2");
AcknowledgedResponse response = client.indices().delete(deleteIndexRequest, RequestOptions.DEFAULT);
boolean acknowledged = response.isAcknowledged();
System.out.println(acknowledged);
}
五。新增(插入)文档API
@Test
public void testCreateDoc() throws IOException {
IndexRequest indexRequest = new IndexRequest();
indexRequest.index("person4");
indexRequest.id("1");
indexRequest.source("{\n" +
" \"name\":\"dj\",\n" +
" \"age\":21,\n" +
" \"addr\":\"河南\"\n" +
"}",XContentType.JSON);
IndexResponse indexResponse = client.index(indexRequest, RequestOptions.DEFAULT);
DocWriteResponse.Result result = indexResponse.getResult();
String lowercase = result.getLowercase();
System.out.println(lowercase);
}
六。查询删除修改文档
6.1查询文档
@Test
public void testGetDoc() throws IOException {
GetRequest getRequest = new GetRequest();
getRequest.index("person4");
getRequest.id("1");
GetResponse documentFields = client.get(getRequest, RequestOptions.DEFAULT);
String sourceAsString = documentFields.getSourceAsString();
System.out.println(sourceAsString);
Map<String, Object> sourceAsMap = documentFields.getSourceAsMap();
System.out.println(sourceAsMap);
}
6.2修改:直接运行新增(插入)文档API就行,相当于覆盖了
6.3删除
@Test
public void testDeleteDoc() throws IOException {
DeleteRequest deleteRequest = new DeleteRequest("person4","2");
DeleteResponse delete = client.delete(deleteRequest, RequestOptions.DEFAULT);
String lowercase = delete.getResult().getLowercase();
System.out.println(lowercase);
}