EsearchXforjava基于okhttp+sack3开发,是一个代码直白和简单的ElasticsearchORM框架
项目里有3个关键的对象概念:执行上下文查询器命令支持自动序列化和反序列化,以及批量插入、批量更新;脚本查询、聚合查询。快速入门:publicclassDemoApp{StrigtableCreateDsl="...";publicvoiddemo(){EsCotextesx=ewEsCotext("localhost:30480");//创建索引esx.idiceCreate("user_log_20200101",tableCreateDsl);esx.idiceCreate("user_log_20200102",tableCreateDsl);esx.idiceCreate("user_log_20200103",tableCreateDsl);//构建索引别名esx.idiceAliases(a->a.add("user_log_20200101","user_log").add("user_log_20200102","user_log").add("user_log_20200103","user_log"));//删除索引(如果存在就删了;当然也可以直接删)if(esx.idiceExist("user_log_20200101")){esx.idiceDrop("user_log_20200101");}//批量插入List<LogDo>list=ewArrayList<>();list.add(ewLogDo());esx.idice("user_log").isertList(list);//批量插入或更新Map<Strig,LogDo>list=ewLikedHashMap<>();list.put("...",ewLogDo());esx.idice("user_log").upsertList(list);//一个简单的查询LogDoresult=esx.idice("user_log").selectById("1");//一个带条件的查询EsData<LogDo>result=esx.idice("user_log").where(r->r.term("level",5)).orderByDesc("log_id").limit(50).selectList(LogDo.class);//一个复杂些的查询EsData<LogDo>result=esx.idice(idice).where(c->c.useScore().must().term("tag","list1").rage("level",r->r.gt(3))).orderByAsc("level").adByAsc("log_id").miScore(1).limit(50,50).selectList(LogDo.class);//脚本查询EsData<LogDo>result=esx.idice(idice).where(c->c.script("doc['tag'].value.legth()>=params.le",p->p.set("le",2))).limit(10).selectList(LogDo.class);//聚合查询ONoderesult=esx.idice(idice).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();}}点击空白处退出提示










评论