zoukankan      html  css  js  c++  java
  • es-RestHighLevelClient增删改查

    操作es使用的方式为http方式,需要springboot的pom依赖,我使用的版本为:7.4.2,es对应的版本为:7.4.2,springboot的版本为:2.2.1.RELEASE

            <dependency>
                <groupId>org.elasticsearch</groupId>
                <artifactId>elasticsearch</artifactId>
            </dependency>
            <dependency>
                <groupId>org.elasticsearch.client</groupId>
                <artifactId>elasticsearch-rest-client</artifactId>
            </dependency>
            <dependency>
                <groupId>org.elasticsearch.client</groupId>
                <artifactId>elasticsearch-rest-high-level-client</artifactId>
            </dependency>

    直接上代码

    ElasticSearchConfig.class

    package com.dadi01.scrm.service.mot.provider.config;
    
    import com.dadi01.scrm.foundation.model.constant.StringPool;
    import lombok.extern.slf4j.Slf4j;
    import org.apache.http.Header;
    import org.apache.http.HttpHost;
    import org.apache.http.auth.AuthScope;
    import org.apache.http.auth.UsernamePasswordCredentials;
    import org.apache.http.client.CredentialsProvider;
    import org.apache.http.impl.client.BasicCredentialsProvider;
    import org.apache.http.message.BasicHeader;
    import org.elasticsearch.client.*;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * @author lviter
     */
    @Slf4j
    @Configuration
    public class ElasticSearchConfig {
    
        @Value("${elasticsearch.cluster.address}")
        private String clusterAddress;
    
        @Value("${elasticsearch.username}")
        private String username;
    
        @Value("${elasticsearch.password}")
        private String password;
    
        @Value("${elasticsearch.shards}")
        private Integer numberOfShards;
    
        @Value("${elasticsearch.replicas}")
        private Integer numberOfReplicas;
    
        @Value("${elasticsearch.connect_timeout}")
        private Long connectTimeout;
    
        @Value("${elasticsearch.socket_timeout}")
        private Long socketTimeout;
    
        public static RestHighLevelClient client = null;
    
        public Integer getNumberOfShards() {
            return numberOfShards;
        }
    
        public Integer getNumberOfReplicas() {
            return numberOfReplicas;
        }
    
        /**
         * @return 连接es
         */
        @Bean
        public RestHighLevelClient restClient() {
            final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
            credentialsProvider.setCredentials(AuthScope.ANY,
                    new UsernamePasswordCredentials(username, password));
            Header[] defaultHeaders = {new BasicHeader("content-type", "application/json")};
            RestClientBuilder restClientBuilder = RestClient.builder(HttpHost.create(clusterAddress));
            restClientBuilder
                    .setHttpClientConfigCallback(httpAsyncClientBuilder -> httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider))
                    .setDefaultHeaders(defaultHeaders)
                    .setRequestConfigCallback(requestConfigBuilder -> {
                        // 连接5秒超时,套接字连接60s超时
                        return requestConfigBuilder.setConnectTimeout(connectTimeout.intValue()).setSocketTimeout(socketTimeout.intValue());
                    })
                    .setHttpClientConfigCallback(httpClientBuilder -> {
                        httpClientBuilder.disableAuthCaching();
                        return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
                    });
    
            client = new RestHighLevelClient(restClientBuilder);
            return client;
        }
    
        private List<HttpHost> createHttpHostList() {
            List<HttpHost> hostList = new ArrayList<>();
            String[] hostNamesPort;
            if (!clusterAddress.contains(StringPool.COMMA)) {
                hostNamesPort = new String[]{clusterAddress};
            } else {
                hostNamesPort = clusterAddress.split(",");
            }
            for (String host : hostNamesPort) {
                hostList.add(new HttpHost(host.substring(0, host.indexOf(StringPool.COLON)), Integer.parseInt(host.substring(host.indexOf(StringPool.COLON) + 1))));
            }
            return hostList;
        }
    
    }

    EsSettingsConstant.class

    package com.dadi01.scrm.service.mot.provider.constant;
    
    /**
     * @author lviter
     */
    public class EsSettingsConstant {
    
        /**
         * 数据分片数
         */
        public final static String NUMBER_OF_SHARDS = "index.number_of_shards";
    
        /**
         * 数据备份数
         */
        public final static String NUMBER_OF_REPLICAS = "index.number_of_replicas";
    
        /**
         * 分页查询es限制最大条数
         */
        public final static String MAX_RESULT_WINDOW = "index.max_result_window";
    
        /**
         * 最大一亿
         */
        public final static String MAX_RESULT_WINDOW_VALUE = "100000000";
    
    }

    es通用增删改查

    package com.dadi01.scrm.service.mot.provider.impl;
    
    import com.alibaba.fastjson.JSON;
    import com.dadi01.scrm.foundation.model.constant.StringPool;
    import com.dadi01.scrm.foundation.model.dto.PageData;
    import com.dadi01.scrm.foundation.model.dto.ResultDTO;
    import com.dadi01.scrm.foundation.model.dto.ResultListDTO;
    import com.dadi01.scrm.foundation.model.dto.ResultPageDTO;
    import com.dadi01.scrm.foundation.model.error.ErrorEnum;
    import com.dadi01.scrm.foundation.model.exception.ScrmException;
    import com.dadi01.scrm.service.mot.api.IElasticSearchService;
    import com.dadi01.scrm.service.mot.api.common.EsLogActionEnum;
    import com.dadi01.scrm.service.mot.api.dto.elasticsearch.CrowdMessageDTO;
    import com.dadi01.scrm.service.mot.api.dto.elasticsearch.MemberDTO;
    import com.dadi01.scrm.service.mot.api.dto.elasticsearch.OperatingLogDTO;
    import com.dadi01.scrm.service.mot.provider.config.ElasticSearchConfig;
    import com.dadi01.scrm.service.mot.provider.constant.EsIndexConstant;
    import com.dadi01.scrm.service.mot.provider.constant.EsSettingsConstant;
    import com.dadi01.scrm.service.mot.provider.util.JsonUtils;
    import com.google.gson.Gson;
    import lombok.extern.slf4j.Slf4j;
    import org.apache.commons.lang3.StringUtils;
    import org.elasticsearch.action.admin.indices.alias.get.GetAliasesRequest;
    import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
    import org.elasticsearch.action.admin.indices.get.GetIndexRequest;
    import org.elasticsearch.action.bulk.BulkRequest;
    import org.elasticsearch.action.delete.DeleteRequest;
    import org.elasticsearch.action.delete.DeleteResponse;
    import org.elasticsearch.action.get.GetRequest;
    import org.elasticsearch.action.get.GetResponse;
    import org.elasticsearch.action.index.IndexRequest;
    import org.elasticsearch.action.search.MultiSearchRequest;
    import org.elasticsearch.action.search.MultiSearchResponse;
    import org.elasticsearch.action.search.SearchRequest;
    import org.elasticsearch.action.search.SearchResponse;
    import org.elasticsearch.action.support.master.AcknowledgedResponse;
    import org.elasticsearch.action.update.UpdateRequest;
    import org.elasticsearch.action.update.UpdateResponse;
    import org.elasticsearch.client.GetAliasesResponse;
    import org.elasticsearch.client.RequestOptions;
    import org.elasticsearch.client.RestHighLevelClient;
    import org.elasticsearch.client.indices.CreateIndexRequest;
    import org.elasticsearch.client.indices.CreateIndexResponse;
    import org.elasticsearch.cluster.metadata.AliasMetaData;
    import org.elasticsearch.common.settings.Settings;
    import org.elasticsearch.common.xcontent.XContentType;
    import org.elasticsearch.index.query.QueryBuilders;
    import org.elasticsearch.search.SearchHit;
    import org.elasticsearch.search.builder.SearchSourceBuilder;
    import org.elasticsearch.search.sort.SortOrder;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.scheduling.annotation.Async;
    import org.springframework.stereotype.Service;
    
    import java.io.IOException;
    import java.lang.reflect.Field;
    import java.util.*;
    import java.util.concurrent.atomic.AtomicLong;
    
    /**
     * @author lviter
     */
    @Slf4j
    @Service
    public class ElasticSearchServiceImpl implements IElasticSearchService {
    
        @Autowired
        private RestHighLevelClient restHighLevelClient;
        @Autowired
        private ElasticSearchConfig elasticSearchConfig;
    
        private static AtomicLong i = new AtomicLong(0);
    
        @Override
        public ResultDTO<Object> getElasticSearchInfo() {
            SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
            // SearchRequest
            SearchRequest searchRequest = new SearchRequest();
            searchRequest.source(searchSourceBuilder);
            // 查询ES
            SearchResponse searchResponse = null;
            try {
                searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
            } catch (IOException e) {
                log.error("es查询异常{}", JsonUtils.objectToJson(e));
            }
            return ResultDTO.success(searchResponse);
        }
    
        @Override
        public ResultDTO<Boolean> addCrowdMessage(String index, CrowdMessageDTO crowdMessageDTO) {
            if (StringUtils.isBlank(index)) {
                throw new ScrmException(ErrorEnum.MOT_ES_INDEX_NOT_NULL.build());
            }
            IndexRequest indexRequest = new IndexRequest(index);
            Long createTime = System.currentTimeMillis();
            crowdMessageDTO.setCreateTime(createTime);
            String source = JSON.toJSONString(crowdMessageDTO);
            try {
                indexRequest.source(source, XContentType.JSON);
                restHighLevelClient.index(indexRequest, RequestOptions.DEFAULT);
            } catch (IOException e) {
                log.error("es add data filed{}", JsonUtils.objectToJson(e));
                throw new ScrmException(ErrorEnum.MOT_ES_ADD_DATA_FAILED.build());
            }
            addOperatingLog(EsIndexConstant.ES_OPERATING_LOG.getIndex(), EsLogActionEnum.INSERT, index, new Gson().toJson(source));
            return ResultDTO.success(true);
        }
    
        /**
         * 批量添加es数据
         *
         * @param crowdMessages
         * @return
         */
        @Override
        public ResultDTO addBatchCrowdMessage(String index, List<CrowdMessageDTO> crowdMessages) {
            if (crowdMessages.size() > 100000) {
                log.error("es add batch data too large{}", crowdMessages.size());
                throw new ScrmException(ErrorEnum.MOT_ES_ADD_DATA_FAILED.build());
            }
            BulkRequest request = new BulkRequest();
            crowdMessages.forEach(crowdMessageDTO -> {
                crowdMessageDTO.setCreateTime(System.currentTimeMillis());
                crowdMessageDTO.setSort(i.getAndIncrement());
                String source = JSON.toJSONString(crowdMessageDTO);
                request.add(new IndexRequest(index).source(source, XContentType.JSON));
            });
            esBatchAdd(request, index);
            return ResultDTO.success();
        }
    
        @Override
        public ResultDTO<Void> addBatchMember(String index, List<MemberDTO> members) {
            if (members.size() > 100000) {
                log.error("es add batch data too large{}", members.size());
                throw new ScrmException(ErrorEnum.MOT_ES_ADD_DATA_FAILED.build());
            }
    
            BulkRequest request = new BulkRequest();
            members.forEach(member -> {
                member.setCreateTime(System.currentTimeMillis());
                String source = JSON.toJSONString(member);
                request.add(new IndexRequest(index).source(source, XContentType.JSON));
            });
            esBatchAdd(request, index);
            return ResultDTO.success();
        }
    
        /**
         * 批量插入数据
         *
         * @param bulkRequest
         * @param index
         */
        private void esBatchAdd(BulkRequest bulkRequest, String index) {
            try {
                restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
            } catch (Exception e) {
                log.error("es add batch data filed{}", JsonUtils.objectToJson(e));
                throw new ScrmException(ErrorEnum.MOT_ES_ADD_DATA_FAILED.build());
            }
            log.info("插入数据----------------------{}", bulkRequest.requests().size());
            addOperatingLog(EsIndexConstant.ES_OPERATING_LOG.getIndex(), EsLogActionEnum.INSERT, index, String.valueOf(bulkRequest.requests().size()));
        }
    
        /**
         * 创建索引
         *
         * @param index
         */
        @Override
        public ResultDTO<Void> createIndexResponse(String index) {
            //创建索引,如果索引已存在,返回错误信息
            if (checkIndexExists(index)) {
                log.info("索引已存在{}", index);
                throw new ScrmException(ErrorEnum.MOT_ES_INDEX_ALREADY_EXIST.build());
            }
            //创建索引
            CreateIndexRequest createIndexRequest = new CreateIndexRequest(index);
            //设置分片
            createIndexRequest.settings(
                    Settings.builder().put(EsSettingsConstant.NUMBER_OF_SHARDS, elasticSearchConfig.getNumberOfShards())
                            .put(EsSettingsConstant.NUMBER_OF_REPLICAS, elasticSearchConfig.getNumberOfReplicas())
                            .put(EsSettingsConstant.MAX_RESULT_WINDOW, EsSettingsConstant.MAX_RESULT_WINDOW_VALUE));
            CreateIndexResponse createIndexResponse = null;
            try {
                createIndexResponse = restHighLevelClient.indices().create(createIndexRequest, RequestOptions.DEFAULT);
                boolean acknowledged = createIndexResponse.isAcknowledged();
                boolean shardsAcknowledged = createIndexResponse.isShardsAcknowledged();
    
                if (acknowledged && shardsAcknowledged) {
                    addOperatingLog(EsIndexConstant.ES_OPERATING_LOG.getIndex(), EsLogActionEnum.CREATE, index, new Gson().toJson(createIndexResponse));
                    log.info("索引创建成功{}", index);
                }
            } catch (IOException e) {
                log.error("index create failed{}", JsonUtils.objectToJson(e));
                addOperatingLog(EsIndexConstant.ES_OPERATING_LOG.getIndex(), EsLogActionEnum.CREATE, index, new Gson().toJson(e));
                throw new ScrmException(ErrorEnum.MOT_ES_INDEX_CREATE_FAILED.build());
            }
            return ResultDTO.success();
        }
    
        /**
         * 判断索引是否存在
         *
         * @param indexName
         * @return
         * @throws IOException
         */
        public boolean checkIndexExists(String indexName) {
            GetIndexRequest request = new GetIndexRequest().indices(indexName);
            try {
                return restHighLevelClient.indices().exists(request, RequestOptions.DEFAULT);
            } catch (IOException e) {
                log.error("判断索引是否存在,操作异常!");
            }
            return false;
        }
    
        @Override
        public ResultPageDTO<CrowdMessageDTO> pageQuery(Integer page, Integer rows, String index, Integer status) {
            SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder()
                    .from((page - 1) * rows)
                    .size(rows)
                    .sort("sort", SortOrder.DESC)
                    .trackTotalHits(true);
            if (status != null) {
                searchSourceBuilder.query(QueryBuilders.termQuery("status", status));
            }
            SearchResponse searchResponse = pageQuerySearchResponse(searchSourceBuilder, index);
            long total = searchResponse.getHits().getTotalHits().value;
            // 遍历封装列表对象
            List<CrowdMessageDTO> crowdMessages = new ArrayList<>();
            SearchHit[] searchHits = searchResponse.getHits().getHits();
            for (SearchHit searchHit : searchHits) {
                crowdMessages.add(JSON.parseObject(searchHit.getSourceAsString(), CrowdMessageDTO.class).setId(searchHit.getId()));
            }
            return ResultPageDTO.success(new PageData<CrowdMessageDTO>().setData(crowdMessages).setPageSize(crowdMessages.size()).setTotal((int) total));
        }
    
        @Override
        public ResultPageDTO<Map<String, Object>> pageQueryByIndex(Integer page, Integer rows, String index) {
            SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder()
                    .from((page - 1) * rows)
                    .size(rows)
                    .trackTotalHits(true);
            SearchResponse searchResponse = pageQuerySearchResponse(searchSourceBuilder, index);
            long total = searchResponse.getHits().getTotalHits().value;
    
            List<Map<String, Object>> resultList = new ArrayList<>();
            // 遍历封装列表对象
            SearchHit[] searchHits = searchResponse.getHits().getHits();
            for (SearchHit searchHit : searchHits) {
                searchHit.getSourceAsMap().put("id", searchHit.getId());
                resultList.add(searchHit.getSourceAsMap());
            }
            return ResultPageDTO.success(new PageData<Map<String, Object>>().setData(resultList).setPageSize(resultList.size()).setTotal((int) total));
        }
    
        /**
         * 分页查询搜索es
         *
         * @param searchSourceBuilder
         * @param index
         * @return
         */
        private SearchResponse pageQuerySearchResponse(SearchSourceBuilder searchSourceBuilder, String index) {
            SearchRequest searchRequest = new SearchRequest()
                    .source(searchSourceBuilder)
                    .indices(index);
            SearchResponse searchResponse;
            try {
                log.info("查询es入参:{}", new Gson().toJson(searchRequest));
                searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
            } catch (IOException e) {
                log.error("es page query failed{}", JsonUtils.objectToJson(e));
                throw new ScrmException(ErrorEnum.MOT_ES_PAGE_QUERY_FAILED.build());
            }
            return searchResponse;
        }
    
        @Override
        public ResultDTO<CrowdMessageDTO> getById(String index, String id) {
            if (StringUtils.isBlank(index)) {
                index = EsIndexConstant.ES_TEST.getIndex();
            }
            GetRequest getRequest = new GetRequest(index, id);
            GetResponse getResponse = null;
            try {
                log.info("根据编号查询数据,rq:{}", new Gson().toJson(getRequest));
                getResponse = restHighLevelClient.get(getRequest, RequestOptions.DEFAULT);
            } catch (IOException e) {
                log.error("es查询异常{}", JsonUtils.objectToJson(e));
                throw new ScrmException(ErrorEnum.MOT_ES_QUERY_FAILED.build());
            }
            CrowdMessageDTO crowdMessageDTO = JSON.parseObject(getResponse.getSourceAsString(), CrowdMessageDTO.class).setId(getResponse.getId());
            return ResultDTO.success(crowdMessageDTO);
        }
    
        @Override
        public ResultListDTO<MemberDTO> getMemberList(List<String> memberIds) {
            List<MemberDTO> memberList = new ArrayList<>();
    
            MultiSearchRequest request = new MultiSearchRequest();
            memberIds.forEach(memberId -> {
                SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder().query(QueryBuilders.matchPhraseQuery("memberId", memberId));
                request.add(new SearchRequest()
                        .source(searchSourceBuilder)
                        .indices(EsIndexConstant.ES_MEMBER_INFO.getIndex()));
            });
            try {
                MultiSearchResponse response = restHighLevelClient.msearch(request, RequestOptions.DEFAULT);
                for (MultiSearchResponse.Item item : response.getResponses()) {
                    log.info(JsonUtils.objectToJson(item));
                    for (SearchHit hit : item.getResponse().getHits().getHits()) {
                        memberList.add(JsonUtils.jsonToPojo(hit.getSourceAsString(), MemberDTO.class));
                    }
                }
            } catch (IOException e) {
                log.error("es查询异常{}", JsonUtils.objectToJson(e));
                throw new ScrmException(ErrorEnum.MOT_ES_QUERY_FAILED.build());
            }
            return ResultListDTO.success(memberList);
        }
    
        @Override
        public ResultDTO update(String index, CrowdMessageDTO crowdMessageDTO) {
            if (StringUtils.isBlank(index)) {
                throw new ScrmException(ErrorEnum.MOT_ES_INDEX_NOT_NULL.build());
            }
            UpdateRequest updateRequest = new UpdateRequest(index, crowdMessageDTO.getId());
            updateRequest.retryOnConflict(3);
            updateRequest.doc(JSON.toJSONString(crowdMessageDTO), XContentType.JSON);
            // 操作ES
            UpdateResponse updateResponse = null;
            try {
                log.info("更新数据,rq:{}", new Gson().toJson(updateRequest));
                updateResponse = restHighLevelClient.update(updateRequest, RequestOptions.DEFAULT);
            } catch (IOException e) {
                log.error("es update failed{}", JsonUtils.objectToJson(e));
                throw new ScrmException(ErrorEnum.MOT_ES_UPDATE_FAILED.build());
            }
            return ResultDTO.success(updateResponse);
        }
    
        @Override
        @Async
        public ResultDTO<Void> updateBatch(String index, List<CrowdMessageDTO> crowdMessages) {
            batchUpdate(index, crowdMessages);
            addOperatingLog(EsIndexConstant.ES_OPERATING_LOG.getIndex(), EsLogActionEnum.UPDATE, index, String.valueOf(crowdMessages.size()));
            return ResultDTO.success();
        }
    
        /**
         * 批量修改
         *
         * @param index
         * @param crowdMessages
         */
        private void batchUpdate(String index, List<CrowdMessageDTO> crowdMessages) {
            BulkRequest bulkRequest = new BulkRequest();
            crowdMessages.forEach(crowdMessageDTO -> bulkRequest.add(new UpdateRequest(index, crowdMessageDTO.getId()).doc(JSON.toJSONString(crowdMessageDTO), XContentType.JSON)));
            try {
                restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
            } catch (IOException e) {
                log.error("es add batch data filed{}", JsonUtils.objectToJson(e));
                throw new ScrmException(ErrorEnum.MOT_ES_UPDATE_FAILED.build());
            }
        }
    
    
        @Override
        public ResultDTO deleteById(String index, String id) {
            if (StringUtils.isBlank(index)) {
                index = EsIndexConstant.ES_TEST.getIndex();
            }
            DeleteRequest deleteRequest = new DeleteRequest(index, id);
            // 操作ES
            DeleteResponse deleteResponse = null;
            try {
                log.info("删除数据根据ID,rq:{}", new Gson().toJson(deleteRequest));
                deleteResponse = restHighLevelClient.delete(deleteRequest, RequestOptions.DEFAULT);
            } catch (IOException e) {
                log.error("es查询异常{}", JsonUtils.objectToJson(e));
                e.printStackTrace();
            }
            return ResultDTO.success(deleteResponse);
        }
    
        @Override
        public ResultDTO deleteIndex(String index) {
            DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest(index);
    
            try {
                AcknowledgedResponse deleteResponse = restHighLevelClient.indices().delete(deleteIndexRequest, RequestOptions.DEFAULT);
                boolean acknowledged = deleteResponse.isAcknowledged();
                if (acknowledged) {
                    return ResultDTO.success();
                }
                addOperatingLog(EsIndexConstant.ES_OPERATING_LOG.getIndex(), EsLogActionEnum.DELETE, index, new Gson().toJson(deleteResponse));
            } catch (IOException e) {
                log.error("es delete index failed{}", JsonUtils.objectToJson(e));
                addOperatingLog(EsIndexConstant.ES_OPERATING_LOG.getIndex(), EsLogActionEnum.DELETE, index, new Gson().toJson(e));
                throw new ScrmException(ErrorEnum.MOT_ES_INDEX_DELETE_FAIL.build());
            }
            return ResultDTO.success();
        }
    
        @Override
        public ResultDTO<Set<String>> getAlias() {
            Set<String> indices;
            GetAliasesRequest request = new GetAliasesRequest();
            try {
                GetAliasesResponse getAliasesResponse = restHighLevelClient.indices().getAlias(request, RequestOptions.DEFAULT);
                Map<String, Set<AliasMetaData>> map = getAliasesResponse.getAliases();
                indices = map.keySet();
                indices.removeIf(str -> str.startsWith(StringPool.DOT));
                return ResultDTO.success(indices);
            } catch (IOException e) {
                log.error("es get indices failed{}", JsonUtils.objectToJson(e));
                throw new ScrmException(ErrorEnum.MOT_ES_QUERY_FAILED.build());
            }
        }
    
        @Override
        public ResultDTO updateAllByKey(String index, String key, String value) {
    //        UpdateRequest updateRequest = new UpdateRequest(index);
    //        restHighLevelClient.update(updateRequest, RequestOptions.DEFAULT);
            return null;
        }
    
        @Override
        @Async
        public ResultDTO<Void> addOperatingLog(String index, EsLogActionEnum esLogActionEnum, String operateIndex, String comment) {
            //创建索引,如果索引不存在,就创建索引
    //        String index = EsIndexConstant.ES_OPERATING_LOG.getIndex();
            if (!checkIndexExists(index)) {
                createIndexResponse(index);
            }
            IndexRequest indexRequest = new IndexRequest(index);
            OperatingLogDTO operatingLogDTO = new OperatingLogDTO();
            operatingLogDTO.setCreateTime(System.currentTimeMillis());
            operatingLogDTO.setLogAction(esLogActionEnum.getKey());
            operatingLogDTO.setLogModule(operateIndex);
            operatingLogDTO.setComment(comment);
            String source = JSON.toJSONString(operatingLogDTO);
            indexRequest.source(source, XContentType.JSON);
            try {
                restHighLevelClient.index(indexRequest, RequestOptions.DEFAULT);
            } catch (IOException e) {
                log.error("add operating log fail!");
            }
            return ResultDTO.success();
        }
    
    
    }
  • 相关阅读:
    darknet实时识别无法显示在窗口解决
    C# 获取当前打开的文件夹2
    C# 如何调试安装包
    C# 自定义文件格式并即时刷新注册表 非关闭explorer
    C# 获取当前打开的文件夹
    SQL Server里面导出SQL脚本(表数据的insert语句)
    windows平台安装redis服务
    C# 默认参数/可选参数需要注意
    webstrom使用
    office密匙
  • 原文地址:https://www.cnblogs.com/javallh/p/13790486.html
Copyright © 2011-2022 走看看