ElasticSearch:进阶,Java操作ES-测试保存
可以通过requestOptions对ES的请求进行设置。
参照API,引入 requestOptions,这里可以对请求进行公共的设置。但是目前是测试没用到,就先注释掉。
/**
* 整合es
* 1.导入依赖
* 2.编写配置 给容器注入一个 RestHighLevelClient
* 3.参照api
*
*/
@Configuration
public class GuliMallElasticSearchConfig {
public static final RequestOptions COMMON_OPTIONS;
static {
RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();
// builder.addHeader("Authorization", "Bearer " + TOKEN);
// builder.setHttpAsyncResponseConsumerFactory(
// new HttpAsyncResponseConsumerFactory
// .HeapBufferedResponseConsumerFactory(30 * 1024 * 1024 * 1024));
COMMON_OPTIONS = builder.build();
}
@Bean
public RestHighLevelClient esRestClient(){
//String hostname, int port, String scheme
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
new HttpHost("192.168.155.3",9200,"http")));//http协议不写也行,默认就是
return client;
}
}
似乎有很多方式完成这些操作。
先查看索引:
GET _cat/indices
删除索引:
DELETE users
Java测试:
/**
* 插入数据
*/
@Test
public void indexTest() throws IOException {
IndexRequest request = new IndexRequest("users");
// 设置索引id
request.id("1"); //不设置就自动生成一个ID
// 第1种方式
request.source("userName","wyw","age","21","gender","男");
// 第2种方式 实际中用的最多的就是这种
// User user = new User();
// user.setUserName("firenay");
// user.setAge("20");
// user.setGender("男");
// String jsonString = JSON.toJSONString(user);
// // 传入json时 指定类型
// request.source(jsonString, XContentType.JSON);
//
// 执行保存操作
IndexResponse response = client.index(request, GuliMallElasticSearchConfig.COMMON_OPTIONS);//同步保存
// client.indexAsync();//异步 里面还需要传一个listener
System.out.println(response);
System.out.println(response.status());
}
上面插入数据的代码跑起来:
java.lang.IncompatibleClassChangeError: Found interface org.elasticsearch.common.bytes.BytesReference, but class was expected
at org.elasticsearch.client.RequestConverters.index(RequestConverters.java:340)
at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:1450)
at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:1424)
at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:1394)
https://www.jianshu.com/p/f81636ee45b4
解决方法还是和之前的版本有关
全改为7.6.2:
成功存储