package es_01; import com.kwan.shuyu.SearchApplication; import lombok.extern.slf4j.Slf4j; import org.elasticsearch.action.DocWriteResponse; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.action.index.IndexResponse; import org.elasticsearch.action.support.replication.ReplicationResponse; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.common.unit.TimeValue; import org.elasticsearch.common.xcontent.XContentType; import org.elasticsearch.index.VersionType; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import java.io.IOException; /** * 设置额外的参数 * * @author : qinyingjie * @version : 2.2.0 * @date : 2023/5/10 14:00 */ @Slf4j @SpringBootTest(classes = SearchApplication.class) @RunWith(SpringRunner.class) public class TestDocument_07_add { @Autowired RestHighLevelClient client; @Test public void testAdd() throws IOException { //构建请求 IndexRequest request = new IndexRequest("test_post"); request.id("5"); //构建文档数据 String jsonString = "{\n" + " \"user\":\"tomas\",\n" + " \"postDate\":\"2019-07-18\",\n" + " \"message\":\"trying out es1\"\n" + "}"; request.source(jsonString, XContentType.JSON); //设置超时时间 request.timeout("1s"); request.timeout(TimeValue.timeValueSeconds(1)); //手动维护版本号 request.version(4); request.versionType(VersionType.EXTERNAL); //同步执行 IndexResponse indexResponse = client.index(request, RequestOptions.DEFAULT); //获取结果 log.info(indexResponse.getIndex()); log.info(indexResponse.getId()); log.info(String.valueOf(indexResponse.getResult())); if (indexResponse.getResult() == DocWriteResponse.Result.CREATED) { DocWriteResponse.Result result = indexResponse.getResult(); log.info("CREATE" + result); } else if (indexResponse.getResult() == DocWriteResponse.Result.UPDATED) { DocWriteResponse.Result result = indexResponse.getResult(); log.info("UPDATED" + result); } ReplicationResponse.ShardInfo shardInfo = indexResponse.getShardInfo(); if (shardInfo.getTotal() != shardInfo.getSuccessful()) { log.info("处理成功的分片数少于总分片!"); } if (shardInfo.getFailed() > 0) { for (ReplicationResponse.ShardInfo.Failure failure : shardInfo.getFailures()) { String reason = failure.reason();//每一个错误的原因 log.info(reason); } } } }