首页 > 其他分享 >ES 高亮查询及基本配置

ES 高亮查询及基本配置

时间:2024-09-19 12:20:25浏览次数:11  
标签:userName 高亮 searchSourceBuilder req private 查询 es new ES

依赖

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

配置 必加

//es:
//  hostname: 124.70.138.156
//  port: 9200
//  scheme: http


@Configuration
@ConfigurationProperties(prefix = "es")
@Data
public class InitElasticsearchRestHighLevelClient {


    /**
     * es 主机地址
     */
    private String hostname;


    /**
     * 端口
     */
    private int port;


    /**
     * 请求协议
     */
    private String scheme;


    /**
     * 初始化 RestHighLevelClient 用来操作es
     *
     * @return
     */
    @Bean
    public RestHighLevelClient restHighLevelClient() {
        return new RestHighLevelClient(RestClient.builder(new HttpHost(hostname, port, scheme)));
    }


}

异常

配置类没有加es配置信息导致@Configuration无法识别到es配置

查询思维导图

初始化同步数据

@Log4j2
@Component
public class EsSync implements ApplicationRunner {


    @Resource
    private OmsRemote omsRemote;


    @Autowired
    private OmsEsController omsEsController;


    @Override
    public void run(ApplicationArguments args) throws Exception{
        List<OmsRecordRes> data = omsRemote.findRelationAll().getData();
        data.forEach(System.out::println);
        omsEsController.batchInsert(data);
        log.info("數據同步成功,內容為:{}",data);


    }
}

注解

@Autowired
private RestHighLevelClient restHighLevelClient;

查询 + 高亮

@Override
public Result<PageResult<WashOrderDTO>> queryWashOrder(WashOrderReq req) {
    long total = 0;
    List<WashOrderDTO> list = new ArrayList<>();


    try {
        //创建请求索引
        SearchRequest searchRequest = new SearchRequest(INDEX_NAME);
        //创建构造器
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        //创建条件拼接
        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
        //判断请求条件
        //查询订单号 精确查询
        if (StringUtils.isNotBlank(req.getWashId())){
            boolQueryBuilder.must(QueryBuilders.termQuery("washId",req.getWashId()));
        }
        //查询用户名 模糊查询
        if (StringUtils.isNotBlank(req.getUserName())){
            boolQueryBuilder.must(QueryBuilders.matchQuery("userName",req.getUserName()));
        }
        //根据总价排序


        //条件存放构造器
        searchSourceBuilder.query(boolQueryBuilder);
        //分页
        searchSourceBuilder.from((req.getPageNum()-1)*req.getPageSize());
        searchSourceBuilder.size(req.getPageSize());
        //排序
        searchSourceBuilder.sort("washPrice", SortOrder.DESC);
        //高亮
        searchSourceBuilder.highlighter(new HighlightBuilder().field("userName").preTags("<span style=\"color=red\">").postTags("</span>"));
        searchRequest.source(searchSourceBuilder);
        SearchResponse search = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
        SearchHits hits = search.getHits();
        //总条数
        total = hits.getTotalHits().value;
        for (SearchHit hit : hits.getHits()) {
            String sourceAsString = hit.getSourceAsString();
            WashOrderDTO washOrderDTO = JSONObject.parseObject(sourceAsString, WashOrderDTO.class);
            washOrderDTO.setWashId(Integer.valueOf(hit.getId()));
            //获取高亮集合
            Map<String, HighlightField> highlightFields = hit.getHighlightFields();
            if (null!=highlightFields){
                HighlightField userName = highlightFields.get("userName");
                if (userName!=null){
                    String str = "";
                    for (Text fragment : userName.getFragments()) {
                        str += fragment;
                    }
                    //将字段替换成高亮
                    washOrderDTO.setUserName(str);
                }
            }
            //将存储的结果存入list集合
            list.add(washOrderDTO);
        }


    } catch (IOException e) {
        throw new RuntimeException(e);
    }
    return PageResult.toResult(total,list);
}

标签:userName,高亮,searchSourceBuilder,req,private,查询,es,new,ES
From: https://blog.csdn.net/yxhsk8/article/details/142357042

相关文章

  • py3.7+win10的cv2.xfeatures2d_SIFT.create()函数不存在问题
    python3.7环境window1064位cv2包问题。问题做图片处理用opencv-python做模板匹配的时候会用个sift模型,就会用到cv2.xfeatures2d_SIFT.create()这个函数,在我正要用它增加自己知识,巴拉巴啦....的时候,咦?!这是个什么鬼哦,没有这个函数呢。百度发现需要什么卸载原版本,换成opencv-......
  • 深入理解 dladdr:符号信息查询与应用场景详解
    dladdr是一个用于获取与特定地址相关的符号信息的函数,它在Linux和类UNIX系统中非常有用,尤其是在进行调试或诊断时。以下是详细的介绍和一些使用示例:1.基本概念dladdr函数通常用于获取共享库中的符号信息。它可以根据给定的地址,返回该地址对应的符号信息,例如函数名称、所在的......
  • 回归预测 | Matlab实现CDO-ESN切诺贝利灾难优化器优化回声状态网络多输入单输出回归预
    回归预测|Matlab实现CDO-ESN切诺贝利灾难优化器优化回声状态网络多输入单输出回归预测目录回归预测|Matlab实现CDO-ESN切诺贝利灾难优化器优化回声状态网络多输入单输出回归预测效果一览基本介绍程序设计参考资料效果一览基本介绍1.Matlab实现CDO-ESN切诺贝利灾难优化器优化......
  • 易优eyoucms网站请检查数据库连接信息,Access denied for user 'root'@'localhost' (us
    当你遇到“Accessdeniedforuser'root'@'localhost'(usingpassword:YES)”这样的错误时,这意味着数据库系统拒绝了你的连接请求,通常是由于提供的凭据不正确。你可以按照以下步骤来检查和修改数据库连接信息:检查数据库连接信息:确认数据库用户名(通常是root)、密码、以及数......
  • 解决React Warning: Function components cannot be given refs. Attempts to access
    问题当我使用如下方式调用组件子组件UploadModal并且绑定Ref时React报错“Warning:Functioncomponentscannotbegivenrefs.Attemptstoaccessthisrefwillfail.DidyoumeantouseReact.forwardRef()?”;constUploadModalRef=useRef(null);constopenUploadModa......
  • 谷歌网站收录查询,教你怎么查询谷歌网站收录
    查询谷歌网站收录情况,可以通过以下几种方法来实现:一、使用GoogleSearchConsole(谷歌搜索控制台)GoogleSearchConsole是查询网站谷歌收录情况的首选工具,它提供了详细且准确的收录数据。以下是使用步骤:注册并验证网站:访问GoogleSearchConsole官网,并使用谷歌账户登录。在控......
  • MongoDB 查询文档内的对象属性
    基本查询语法在MongoDB中,查询文档内的对象属性通常使用$操作符和.操作符来实现。下面是基本的查询语法:使用.操作符访问对象属性:如:【对象.属性:值】db.collection.find({"object.property":value})查询对象的嵌套字段如果我们想要查询学生中数学成绩大于80分的学生,可以使用”.”运......
  • 怎么办?用DolphinScheduler调度执行复杂的HiveSQL时无法正确识别符号
    在使用ApacheDolphinScheduler调度执行复杂的HiveSQL时,HQL包含多种海豚无法正确识别的符号,怎么办?本文提供了可行的思路和方法,供用户参考。一、目的在Hive中完成复杂JSON,既有对象还有数组而且数组中包含数组的解析后,原本以为没啥问题了,结果在DolphinScheduler中调度又出现了大问......
  • 蓝易云服务器 - ubuntu系统服务器安装WordPress教程
    在Ubuntu系统服务器上安装WordPress的教程如下:安装LAMP(Linux+Apache+MySQL+PHP):在终端中运行以下命令安装LAMP组件。sudoapt-getupdatesudoapt-getinstallapache2mysql-serverphplibapache2-mod-phpphp-mysql配置MySQL:运行以下命令配置MySQLroot用户的密码,并进行其......
  • ES 常用API:创建索引,创建别名,重建索引
    华为云不同版本间索引同步数据(目前华为后台工具不能跨版本间同步数据):ES常用API:创建索引,创建别名,重建索引华为云不同版本间索引同步数据(目前华为后台工具不能跨版本间同步数据):elasticdump--inputhttp://admin:123456@ip:9200/sensitive_1_v15--outputhttp://admin:123123@......