EsearchX

Elasticsearch ORM 框架
授权协议 Apache
开发语言 Java
所属分类 程序开发、 ORM/持久层框架
软件类型 开源软件
地区 国产
投 递 者 安聪
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

EsearchX for java

基于 okhttp + snack3 开发,是一个代码直白和简单的 Elasticsearch ORM 框架

项目里有3个关键的对象概念:

  • 执行上下文
  • 查询器
  • 命令

支持自动序列化和反序列化,以及批量插入、批量更新;脚本查询、聚合查询。

快速入门:

public class DemoApp {
    String tableCreateDsl = "...";

    public void demo() {
        EsContext esx = new EsContext("localhost:30480");

        //创建索引
        esx.indiceCreate("user_log_20200101", tableCreateDsl);
        esx.indiceCreate("user_log_20200102", tableCreateDsl);
        esx.indiceCreate("user_log_20200103", tableCreateDsl);

        //构建索引别名
        esx.indiceAliases(a -> a
                .add("user_log_20200101", "user_log")
                .add("user_log_20200102", "user_log")
                .add("user_log_20200103", "user_log"));
        
        //删除索引(如果存在就删了;当然也可以直接删)
        if (esx.indiceExist("user_log_20200101")) {
            esx.indiceDrop("user_log_20200101");
        }
        
        //批量插入
        List<LogDo> list = new ArrayList<>();
        list.add(new LogDo());
        esx.indice("user_log").insertList(list);
        
        //批量插入或更新
        Map<String, LogDo> list = new LinkedHashMap<>();
        list.put("...",new LogDo());
        esx.indice("user_log").upsertList(list);
        
        //一个简单的查询
        LogDo result = esx.indice("user_log").selectById("1");
        
        //一个带条件的查询
        EsData<LogDo> result = esx.indice("user_log")
                .where(r -> r.term("level", 5))
                .orderByDesc("log_id")
                .limit(50)
                .selectList(LogDo.class);
        
        //一个复杂些的查询
        EsData<LogDo> result = esx.indice(indice)
                .where(c -> c.useScore().must()
                        .term("tag", "list1")
                        .range("level", r -> r.gt(3)))
                .orderByAsc("level")
                .andByAsc("log_id")
                .minScore(1)
                .limit(50, 50)
                .selectList(LogDo.class);

        //脚本查询
        EsData<LogDo> result = esx.indice(indice)
                .where(c -> c.script("doc['tag'].value.length() >= params.len", p->p.set("len",2)))
                .limit(10)
                .selectList(LogDo.class);
        
        //聚合查询
        ONode result = esx.indice(indice)
                .where(w->w.term("tag","list1"))
                .limit(0)
                .aggs(a -> a.terms("level", t -> t.size(20))
                            .aggs(a1 -> a1.topHits(2, s -> s.addByAes("log_fulltime"))))
                .selectAggs();
    }
}
  • EsearchX for java 是基于 okhttp + snack3 开发的,一个代码直白和简单的 Elasticsearch ORM 框架。 支持 jdk8、jdk11、jdk17、jdk20 支持 es7.x、es8.x 采用 lambda 链式写法,很是清新 public class DemoApp { public void demo() { EsContex

 相关资料
  • 我们在WebLogic11g下使用JSF2.1+PrimeFaces6.0+PrimeFaces-Extensions6.0.0、mojarra 2.1.7。 单击p:commandButton后,DOM inspector显示对话框已在正文和html标记之外创建,如下一个图像所示: 在正文外部呈现的对话框 如果我们使用相同的代码(没有帧)创建一个新的.xhtml,并单击p:commandButt

  • 许多的 PHP 开发者都使用框架,而不是重新造轮子来构建 Web 应用。框架抽象了许多底层常用的逻辑,并提供了有益又简便的方法來完成常见的任务。 你并不一定要在每个项目中都使用框架。有时候原生的 PHP 才是正确的选择,但如果你需要一个框架,那么有如下三种主要类型: 微型框架 全栈框架 组件框架 微型框架基本上是一个封装的路由,用来转发 HTTP 请求至一个闭包,控制器,或方法等等,尽可能地加快开

  • 主要内容:iframe - 设置高度与宽度,实例,iframe - 移除边框,实例,使用 iframe 来显示目标链接页面,实例,HTML iframe 标签通过使用框架,你可以在同一个浏览器窗口中显示不止一个页面。 iframe语法: 该URL指向不同的网页。 iframe - 设置高度与宽度 height 和 width 属性用来定义iframe标签的高度与宽度。 属性默认以像素为单位, 但是你可以指定其按比例显示 (如:"80%")。 实例 <iframe loading="lazy" s

  • tornado.web — RequestHandler and Application classes Thread-safety notes Request handlers Entry points Input Output Cookies Other Application configuration Decorators Everything else tornado.template

  • UI /主题框架和组件 LESS支持下表中列出的一些UI/Theme框架 - Sr.No. 框架和描述 1 1pxdeep 它是平坦的Bootstrap 3主题,提供强大的配色方案控件。 2 Bootflat 它是一个基于Bootstrap的开源框架。 3 BootPress 它是一个基于平面文件CMS的PHP框架 4 Bootstrap 它是功能强大的移动第一前端框架,可实现更快,更轻松的Web

  • 本章介绍 Decoder(解码器) Encoder(编码器) Codec(编解码器) 在前面的章节中,我们讨论了连接到拦截操作或数据处理链的不同方式,展示了如何使用 ChannelHandler 及其相关的类来实现几乎任何一种应用程序所需的逻辑。但正如标准架构模式通常有专门的框架,通用处理模式很适合使用目标实现,可以节省我们大量的开发时间和精力。 在这一章,我们将研究编码和解码——数据从一种特定协

  • WLAN框架接口 函数 rt_err_t  rt_wlan_set_mode (const char *dev_name, rt_wlan_mode_t mode)   注册WLAN设备到WLAN设备框架   rt_err_t  rt_wlan_connect (const char *ssid, const char *password)   同步连接热点   rt_err_t  rt_wlan

  • 通过使用框架,你可以在同一个浏览器窗口中显示不止一个页面。 iframe语法: <iframe src="URL"></iframe> 该URL指向不同的网页。 Iframe - 设置高度与宽度 height 和 width 属性用来定义iframe标签的高度与宽度。 属性默认以像素为单位, 但是你可以指定其按比例显示 (如:"80%")。 <iframe src="demo_iframe.htm