栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

ES7查询数据时报错

ES7查询数据时报错

前言

ES 7查询数据时报错 nested exception is ElasticsearchStatusException


错误如下:
Elasticsearch exception [type=search_phase_execution_exception, reason=all shards failed]; nested exception is ElasticsearchStatusException[Elasticsearch exception [type=search_phase_execution_exception, reason=all shards failed]]

解决办法:

百度一下,还是没有解决,的实体类是如下封装的:

我妥协把搜索的关键字如下改动:

测试灌入数据:

查询数据:

Elasticsearch exception [type=search_phase_execution_exception, reason=all shards failed]

继续报错:

查看ES版本号

curl -XGET localhost:9200
{
  "name" : "xianbingdandan.lan",
  "cluster_name" : "elasticsearch_brew",
  "cluster_uuid" : "QPDPRKuLRpOO9vG7Z4xn_A",
  "version" : {
    "number" : "7.10.2-SNAPSHOT",
    "build_flavor" : "oss",
    "build_type" : "tar",
    "build_hash" : "unknown",
    "build_date" : "2021-01-16T01:34:41.142971Z",
    "build_snapshot" : true,
    "lucene_version" : "8.7.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}


https://github.com/medcl/elasticsearch-analysis-ik/releases?page=4

也可以通过命令进行安装:
使用elasticsearch-plugin命令去安装,进入目录/bin/elasticsearch-plugin

bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.10.2/elasticsearch-analysis-ik-7.10.2.zip

通过此命令全局查找es安装目录

find / -name elasticsearch

cd /usr/local/Cellar/elasticsearch/


在此目录结构中进行安装分词器:

bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.10.2/elasticsearch-analysis-ik-7.10.2.zip




安装Ik插件后,需要重新启动es:

brew services restart elasticsearch

凸(艹皿艹 )

竟然是语法错误❌

最终解决方法–是语法错误
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.plugins.pagination.Pagination;

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.ConnectionClosedException;
import org.apache.http.conn.ConnectTimeoutException;
import org.elasticsearch.ElasticsearchException;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.sort.SortBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;

import org.springframework.data.redis.core.RedisOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.SessionCallback;
import org.springframework.stereotype.Service;

import java.io.IOException;
import java.net.ConnectException;
import java.net.SocketTimeoutException;
import java.sql.SQLOutput;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;




@Service
@Slf4j
public class SearchServiceImpl implements SearchService {

    @Autowired
    private RedisTemplate redisTemplate;

    @Autowired
    private RestHighLevelClient restHighLevelClient;

    
    @Override
    public JsonResult searchInfo(HomeQueryIO homeQueryIO) throws IOException {
        String keyword = homeQueryIO.getKeyword();
        SearchVO searchVO = new SearchVO();
        int pageNum =1;
        int pageSize=10;
        if(ObjectUtil.isNotNull(homeQueryIO.getPageNum())){
            pageNum = homeQueryIO.getPageNum();
        }
        if(ObjectUtil.isNotNull(homeQueryIO.getPageSize())){
            pageSize = homeQueryIO.getPageSize();
        }

        if(StringUtils.isNotEmpty(keyword)){
            BoolQueryBuilder bool_query = QueryBuilders.boolQuery();
            bool_query.should(QueryBuilders.matchQuery("userNameOrRoomName",keyword));
            bool_query.should(QueryBuilders.matchQuery("articleContent", keyword));
            bool_query.should(QueryBuilders.matchQuery("roomLabelName", keyword));
            Pagination page = new Pagination(pageNum, pageSize);

            List essearchobj = searchClazzWithPage("essearchobj", bool_query, page, new String[]{"userNameOrRoomName", "articleContent",
                    "roomLabelName"}, new String[]{}, ESSearchObj.class);
            System.out.println(essearchobj);
        }

        return new JsonResult();
    }

    @Override
    public JsonResult thumbUp(HomeQueryIO homeQueryIO) {
        int type = homeQueryIO.getType();
        int textId = homeQueryIO.getTextId();
        long userId = homeQueryIO.getUserId();
        long entityUserId = homeQueryIO.getEntityUserId();
        if(type == 1){
            like(userId,type,textId,entityUserId);
        }
        return null;
    }

  




    
    private SearchSourceBuilder sourceBuilder(int from, int size, String[] includes, String[] excludes) {
        if (includes == null) {
            return sourceBuilder(from, size);
        }
        if (excludes == null) {
            excludes = new String[]{};
        }
        SearchSourceBuilder source_builder = sourceBuilder(from, size);
        source_builder.fetchSource(includes, excludes);
        return source_builder;
    }

    
    private SearchSourceBuilder sourceBuilder(int from, int size) {
        SearchSourceBuilder source_builder = new SearchSourceBuilder();
        source_builder.from(from);
        source_builder.size(size);
        source_builder.fetchSource();
        return source_builder;
    }

    
    private void sort(SearchSourceBuilder source_builder, SortBuilder... sort_builders) {
        if (sort_builders != null && sort_builders.length > 0) {
            Arrays.stream(sort_builders).forEach(item -> {
                if (Objects.nonNull(item)) {
                    source_builder.sort(item);
                }
            });
        }
    }

    
    private SearchResponse search(SearchRequest search_request) {
        SearchResponse response = null;
        try {
            response = restHighLevelClient.search(search_request, RequestOptions.DEFAULT);
        } catch (ConnectException ce) {
//            elk_logger.error(JacksonUtil.toJson(new ElkRecordLog(ApiErrormetas.ERROR_ES_CONNECT)));
        } catch (ConnectTimeoutException ctc) {
//            elk_logger.error(JacksonUtil.toJson(new ElkRecordLog(ApiErrormetas.ERROR_ES_CONNECT)));
        } catch (SocketTimeoutException ste) {
//            elk_logger.error(JacksonUtil.toJson(new ElkRecordLog(ApiErrormetas.ERROR_ES_CONNECT)));
        } catch (ConnectionClosedException cce) {
//            elk_logger.error(JacksonUtil.toJson(new ElkRecordLog(ApiErrormetas.ERROR_ES_CONNECT)));
        } catch (ElasticsearchException e) {
//            elk_logger.error(JacksonUtil.toJson(new ElkRecordLog(ApiErrormetas.ERROR_ES_CONNECT)));
        } catch (IOException e) {
//            elk_logger.error(JacksonUtil.toJson(new ElkRecordLog(ApiErrormetas.ERROR_ES_CONNECT)));
        }
        return response;
    }

    
    private  List responseToClazz(SearchResponse response, Pagination page, Class c) {
        if (Objects.isNull(response)) {
            return null;
        }
        List res = new ArrayList<>(response.getHits().getHits().length);
        for (SearchHit hit : response.getHits()) {
            T t = JacksonUtil.fromJson(hit.getSourceAsString(), c);
            res.add(t);
        }
        if (ObjectUtil.isNotNull(page)) {
            System.out.println(page);

//            page.setTotal((int) response.getHits().getTotalHits().value);
        }
        return res;
    }

    
    public  List searchClazzWithPage(String index, BoolQueryBuilder bool_query, Pagination page, String[] includes, String[] excludes, Class c, SortBuilder... sort_builders) {
        if (Objects.isNull(index)) {
            return null;
        }
        SearchSourceBuilder source_builder = sourceBuilder(page.getOffset(), page.getSize(), includes, excludes);
        source_builder.query(bool_query);
        // 排序
        sort(source_builder, sort_builders);
        source_builder.trackTotalHits(true);
        SearchRequest search_request = new SearchRequest(index);
        search_request.source(source_builder);
        // 查询
        SearchResponse response = search(search_request);
        // 解析响应结果
        return responseToClazz(response, page, c);
    }

}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/760910.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号