问题描述
我要索引的JSON字段之一是形式为“ 2000-01-01”的字符串。
建立索引正常,但是查询操作失败,出现search_phase_execution_exception,原因=所有分片均失败。
索引:
IndexRequest request = new IndexRequest("testIndex");
request.source(jsonObject,XContentType.JSON);
request.type("text");
try (RestHighLevelClient client = RestClients.create(ClientConfiguration.builder().connectedTo(esHostPort).build()).rest()) {
client.index(request,RequestOptions.DEFAULT);
}
查询:
SearchSourceBuilder builder = new SearchSourceBuilder().postFilter(QueryBuilders.multiMatchQuery(queryString,searchFields));
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());
mapper.`enter code here`disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
try (RestHighLevelClient client = RestClients.create(ClientConfiguration.builder().connectedTo(esHostPort).build()).rest()) {
SearchHit[] searchHits = client.search(new SearchRequest().searchType(SearchType.DFS_QUERY_THEN_FETCH).source(builder),RequestOptions.DEFAULT).getHits().getHits();
resp = Arrays.stream(searchHits).map(hit -> {
try {
return mapper.readValue(hit.getSourceAsstring(),QueryResponse.class);
} catch (IOException e) {
throw new RuntimeException(e);
}
}).collect(Collectors.toList());
}
当我省略日期字段时,一切进展顺利,因此它看起来与日期检测有关,我不知道如何在RestHighLevelClient中禁用它。
谢谢,欧内斯特
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)