首页 > 其他分享 >Easy es问题总结

Easy es问题总结

时间:2024-07-22 11:08:38浏览次数:14  
标签:总结 dromara elasticsearch Easy org import annotation es

官网教程:https://www.easy-es.cn/pages/ac41f0/#settings

 

一 测试项目

1 pom

    <dependencies>
        <!-- 排除springboot中内置的es依赖,以防和easy-es中的依赖冲突-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.elasticsearch.client</groupId>
                    <artifactId>elasticsearch-rest-high-level-client</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.elasticsearch</groupId>
                    <artifactId>elasticsearch</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
        </dependency>
 
        <dependency>
            <groupId>org.dromara.easy-es</groupId>
            <artifactId>easy-es-boot-starter</artifactId>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

 

2 application.yml

# elasticsearch配置
easy-es:
  # 默认为true,若为false时,则认为不启用本框架
  enable: true 
  #填你的es连接地址
  address: 192.168.1.247:9200  

 

3 启动项:

添加扫描路径

@EsMapperScan("com.xxx.mapper_es")

 

4 domain_es

package com.xxx.domain_es;
 
import com.helka.bo.domain.gen.entity.BoSopContent;
import lombok.Data;
import org.dromara.easyes.annotation.IndexField;
import org.dromara.easyes.annotation.IndexId;
import org.dromara.easyes.annotation.IndexName;
import org.dromara.easyes.annotation.rely.Analyzer;
import org.dromara.easyes.annotation.rely.FieldType;
import org.dromara.easyes.annotation.rely.IdType;
 
 
@Data
@IndexName("bo_sop_content")
public class BoSopContentES {
    /**
     * ES的id(必须,否则会抛异常)
     */
    @IndexId(type= IdType.CUSTOMIZE)
    private String id;
    /**
     * sop的标题
     */
    @IndexField(fieldType = FieldType.TEXT, ignoreCase = true, analyzer = Analyzer.IK_SMART, searchAnalyzer = Analyzer.IK_SMART)
    private String sop_title;
 
    /**
     * sop的内容
     */
    @IndexField(fieldType = FieldType.TEXT, ignoreCase = true, analyzer = Analyzer.IK_SMART, searchAnalyzer = Analyzer.IK_SMART)
    private String sop_content;
}

 

5 Mapper

import com.xxx.domain.gen.entity.BoSopContent;
import com.xxx.domain_es.BoSopContentES;
import org.dromara.easyes.core.core.BaseEsMapper;
 
/**
 * @author: Tyler
 * @create: 2024-07-19
 */
 
public interface BoSopContentESMapper extends BaseEsMapper<BoSopContentES> {
}

 

6 controller

package com.xxx.controller;
 
import com.xxx.domain_es.BoSopContentES;
import com.xxx.mapper_es.BoSopContentESMapper;
import lombok.RequiredArgsConstructor;
import org.dromara.easyes.core.conditions.select.LambdaEsQueryWrapper;
import org.elasticsearch.index.query.Operator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
import java.util.List;
 
/**
 * @author: Tyler
 * @create: 2024-07-19
 */
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/sopContentES")
public class BoSopContentESController {
    @Autowired
    BoSopContentESMapper sopMapper;
 
    /**
     * 查询索引下总数
     * @return
     */
    @GetMapping("/count")
    public Long count() {
        LambdaEsQueryWrapper<BoSopContentES> wrapper = new LambdaEsQueryWrapper<>();
        sopMapper.selectCount(wrapper);
        return sopMapper.selectCount(wrapper);
    }
 
    @GetMapping("/search")
    public List<BoSopContentES> search(String req) {
        LambdaEsQueryWrapper<BoSopContentES> wrapper = new LambdaEsQueryWrapper<>();
        //按照得分排序
        wrapper.multiMatchQuery(req
                , Operator.OR
                ,50
                ,BoSopContentES::getSop_title, BoSopContentES::getSop_content
            )
            .sortByScore();
        List<BoSopContentES> list1=sopMapper.selectList(wrapper);
 
        return list1;
    }
 
}

 

二 问题与解决

1 multiMatchQuery 查询与 kibana中不一致

这是由于minimumShouldMatch参数导致,easy-es默认为60,设置为50解决。

        //按照得分排序
        wrapper.multiMatchQuery(req
                , Operator.OR
                ,50
                ,BoSopContentES::getSop_title, BoSopContentES::getSop_content
            )
            .sortByScore();
        List<BoSopContentES> list1=sopMapper.selectList(wrapper);

 

2 org.dromara.easyes.common.exception.EasyEsException: no such method

es 实体创建id,es数据中无需修改

/**
     * ES的id(必须)
     */
    @IndexId(type= IdType.CUSTOMIZE)
    private String id;

 

标签:总结,dromara,elasticsearch,Easy,org,import,annotation,es
From: https://www.cnblogs.com/hanjun0612/p/18315647

相关文章

  • 自动调用关闭释放资源try-with-resource
    try-with-resources自动执行释放资源看到了try这个关键字立马就应该能想到异常处理机制try-catch-finally语句块。这里要说的东西和异常处理背后的机制其实几乎是一样的,只不过try-with-resources侧重点异常后自动释放资源,不需要我们手动去在调用close()方法。后面会从JLS层面,以......
  • Python - requests
    前言:介绍:安装及验证:使用:连续接口请求:传参方式: 前言:当你上班无聊的时候,你做什么,说实话有人让我写个requests的教程,教程我觉得网上已经有很多教程了,也很全面,我还是不要献丑了介绍:哎,我认为就是一个接口请求的仓库,不过requests属于第三方库,......
  • Nessus Professional 10.7.5 Auto Installer for macOS Sonoma (updated Jul 2024)
    NessusProfessional10.7.5AutoInstallerformacOSSonoma(updatedJul2024)发布Nessus试用版自动化安装程序,支持macOSSonoma、RHEL9和Ubuntu24.04请访问原文链接:https://sysin.org/blog/nessus-auto-install-for-macos/,查看最新版。原创作品,转载请保留出处。作......
  • Nessus Professional 10.7.5 Auto Installer for RHEL 9/AlmaLinux 9/Rocky Linux 9 (
    NessusProfessional10.7.5AutoInstallerforRHEL9/AlmaLinux9/RockyLinux9(updatedJul2024)发布Nessus试用版自动化安装程序,支持macOSSonoma、RHEL9和Ubuntu24.04请访问原文链接:https://sysin.org/blog/nessus-auto-install-for-rhel-9/,查看最新版。原创作......
  • Nessus Professional 10.7.5 Auto Installer for Ubuntu 24.04 (updated Jul 2024)
    NessusProfessional10.7.5AutoInstallerforUbuntu24.04(updatedJul2024)发布Nessus试用版自动化安装程序,支持macOSSonoma、RHEL9和Ubuntu24.04请访问原文链接:https://sysin.org/blog/nessus-auto-install-for-ubuntu/,查看最新版。原创作品,转载请保留出处。作......
  • 分布式环境下,如何实现 Session共享
    先了解一下为什么会出现这种session共享的解决方案?随着互联网公司的项目在微服务和分布式的环境下进行的搭建,导致一个项目可能分别部署在几个甚至很多的服务器集群下,此时就会出现一个问题:当用户进行一个session会话的时候,比如一个用户去登录项目,一般的大公司的项目都是有Nginx进......
  • 探索ESP32-A2DP:一个强大的蓝牙音频解决方案
    探索ESP32-A2DP:一个强大的蓝牙音频解决方案项目简介是一个基于EspressifSystemsESP32微控制器的开源项目,它实现了Bluetooth低能耗(BLE)和高级音频分布配置文件(A2DP)。这个项目允许你的ESP32设备作为高质量的蓝牙音频播放器,可以接收来自任何支持A2DP源的设备(如智能手机、电脑)的音频......
  • 无法再现 Transformer 库的 ViTImageProcessor 预处理
    我正在编写一个用于预处理图像的独立代码image_processing_vit但是,我的结果与图书馆的结果不同。以下代码包含两部分:(1)不使用变压器,(2)使用变压器。我不知道我错过了什么。我已阅读代码+询问副驾驶,但它不能解决问题。请帮助我!谢谢。importcv2importnump......
  • ESP32探索记录
    1ESP32-CAM板1.1开局淘宝30块买了各esp32-cam板子;VSCode配置micropython开发环境(安装RT-ThreatMicropyton插件);micropython官方下载esp32espressif固件;通过esptool刷入固件,命令如下:esptool--chipesp32--portCOM8erase_flashesptool--chipesp32--portCOM8write......
  • 总结对象的创建方式
    总结自定义对象的创建方式:直接创建/工厂方式/create/构造函数/es6类语法直接创建letobj1={//字面量创建name:'obj1',printName:function(){console.log(this.name)}};letobj1_1=newObject();//Object()相当于内置的构造函数obj1_1.name='ob......