我使用 ES 7.5.1 来存储数据,使用 Rest API (Spring-boot)。它对单个对象工作正常,但是当我尝试传递对象数组时,它抛出错误请求或不可接受的错误(406)。
代码:
List<UserBean> objectList;
String response = restTemplate.postForObject("http://localhost:9200/employeedata/users", objectList, String.class);
我们可以使用RestHighLevelClient 将批量数据索引到弹性中
Maven 依赖项:
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>${elastic.version}</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
<version>${elastic.version}</version>
</dependency>
配置 :
@Bean
protected RestHighLevelClient createInstance() throws Exception
{
try
{
RestHighLevelClient restHighLevelClient = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", "9200", "http")));
}
catch (Exception e)
{
LOG.error("Error while creating RestHighLevelClient", e);
}
return restHighLevelClient;
}
用法 :
@Autowired
private RestHighLevelClient restHighLevelClient;
@Override
public void storeBulkDataInElastic(List<UserBean> dataBeanList) throws IOException
{
BulkRequest bulkRequest = new BulkRequest();
ObjectMapper objectMapper = new ObjectMapper();
dataBeanList.forEach(data -> {
IndexRequest indexRequest = new IndexRequest("ElasticIndex", "ElasticType", "ElasticId").source(objectMapper.convertValue(data, Map.class));
bulkRequest.add(indexRequest);
});
restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句