Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1093
  • 博文数量: 1
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 20
  • 用 户 组: 普通用户
  • 注册时间: 2015-05-26 16:30
个人简介

javalover123

文章分类
文章存档

2023年(1)

我的朋友
最近访客

分类: Java

2023-04-05 13:06:41

一、前言
ElasticSearch的Java客户端中, 简化了 增删改、建索引等,没有简化 复杂查询 编码。 API 类似 Mybatis-Plus,大幅降低开发门槛,减少代码量,支持 自定义排序、权重、原生查询,留下了 广阔的调整空间

二、Java客户端

Java Transport Client:官方已弃用,二进制协议,版本强绑定,不建议使用

4年多没发布新版本,不维护了,不建议使用

Java REST Client7.15 以下版本适用

Elasticsearch Java API Client7.16 版本发布测试版,建议es 8.0 以上使用

:简化了 增删改、建索引等,没有简化 复杂查询 编码

API 类似 Mybatis-Plus,大幅降低开发门槛,减少代码量,支持 自定义排序、权重、原生查询,留下了 广阔的调整空间

三、easy-es

MySQL

Easy-Es

es-DSL/es java api

and

and

must

or

or

should

=

eq

term

!=

ne

boolQueryBuilder.mustNot(queryBuilder)

>

gt

QueryBuilders.rangeQuery('es field').gt()

>=

ge

.rangeQuery('es field').gte()

<

lt

.rangeQuery('es field').lt()

<=

le

.rangeQuery('es field').lte()

like '%field%'

like

QueryBuilders.wildcardQuery(field,value)

...

 

 

 注意:adress 不能以 http(s):// 开头

  application.yml 配置文件中添加:

 easy-es:
  enable: true # 是否开启EE自动配置 默认开启,可缺省
  address: 域名:9200
  username: elastic
  password: 密码
  banner: false # 默认为true 打印banner 若您不期望打印banner,可配置为false
  global-config:
    process-index-mode: smoothly #索引处理模式,smoothly:平滑模式,默认开启此模式, not_smoothly:非平滑模式, manual:手动模式
    print-dsl: false # 开启控制台打印通过本框架生成的DSL语句,默认为开启,测试稳定后的生产环境建议关闭,以提升少量性能
    async-process-index-blocking: false # 异步处理索引是否阻塞主线程 默认阻塞 数据量过大时调整为非阻塞异步进行 项目启动更快
    db-config:
      table-prefix: # 索引前缀,可用于区分环境 默认为空 用法和MPtablePrefix一样的作用和用法
      field-strategy: not_null # 字段更新策略 默认为not_null
      refresh-policy: none # 默认为不刷新,wait_until对写入性能影响也很大

  maven,以 1.1.1 版本为例({BANNED}最佳新版本是 2.0.0-beta1,后续讨论):

 <dependency>
  <groupId>cn.easy-esgroupId>
  <artifactId>easy-es-boot-starterartifactId>
  <version>1.1.1version>
dependency>

 索引名称:默认是 类名转全小写(没有驼峰了),建议驼峰类名指定

 keepGlobalPrefix:配合全局配置 easy-es.global-config.db-config.table-prefix 实现多个环境公用es

 String类型字段,1.1.1 版本默认为 keyword,为了便于后续升级,建议指定

 @Data
@IndexName(value = "document", keepGlobalPrefix = true)
public class Document {
    /**
     * es中的唯一id
     */
    private String id;

    /**
     * 文档标题
    */
    @IndexField(fieldType = FieldType.KEYWORD)
    private String title;

    /**
     * 文档内容
     */
    @IndexField(fieldType = FieldType.TEXT, analyzer = Analyzer.IK_SMART)
    private String content;
}

编写Mapper类

 public interface DocumentMapper extends BaseEsMapper {
}

添加 @EsMapperScan 注解

 @SpringBootApplication
@EsMapperScan("com.xpc.easyes.sample.mapper")
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

保存

 Document document = new Document();
document.setTitle("老汉");
document.setContent("*技术过硬");
int successCount = documentMapper.insert(document);

更新

 Document document1 = new Document();
document1.setId("id");
document1.setTitle("title1");
documentMapper.updateById(document1);

分页查询

 documentMapper.pageQuery(EsWrappers.lambdaQuery(Document.class).eq(Document::getTitle, "老汉"), 1, 20)

四、总结

,大幅降低开发门槛,减少代码量,支持 自定义排序、权重、原生查询,留下了 广阔的调整空间

阅读(624) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:没有了

给主人留下些什么吧!~~