导火索:由于需要初始化索引配置,初始化时增加了索引,但是索引中无数据。因为查询列表中要用到这个字段排序,在查询列表中找不到这个字段导致报错。
解决:增加该字段的mapping字段映射即可,如下方法:
/** * 创建索引并配置索引相关参数 * * @param elasticsearchClient * @param indexName * @param configMap * @throws IOException */ public static void createIndex(RestHighLevelClient elasticsearchClient, String indexName, Map<String,String> configMap) throws IOException { //创建索引 CreateIndexRequest createIndexRequest = new CreateIndexRequest(indexName); Settings esSetting = Settings.builder() .put("index.max_result_window", configMap.get("max_result_window"))//设置允许最大值 .build(); createIndexRequest.settings(esSetting); if (IndexConstant.LOG_INDEX_TEST.equals(indexName)) {//日志索引 createIndexRequest.mapping("_doc","{\n" + "\"properties\": {\n" + "\"startTime\": {\n" + "\"type\": \"long\"\n" + "}\n" + "}\n" + "}", XContentType.JSON); } elasticsearchClient.indices().create(createIndexRequest, RequestOptions.DEFAULT); }