c/c++语言开发共享一个C++的ElasticSearch Client

ElasticSearch官方是没有提供C++的client的;因此决定自己写一个,命名为ESClient https://github.com/ATinyAnt/ESClient(手下留星 star) 优势是简单易用: * 封装大幅度减少了直接写DSL的机会,避免了一些非逻辑错误 * 只需要包含头 …

elasticsearch官方是没有提供c++的client的;因此决定自己写一个,命名为esclient https://github.com/atinyant/esclient(手下留星 star)

优势是简单易用:

* 封装大幅度减少了直接写dsl的机会,避免了一些非逻辑错误

* 只需要包含头文件 request.h即可以使用

* 复杂的语句,可支持用原生(raw)json嵌套

目前esclient只支持常用的搜索短语,暂不支持插入、更新、删除和响应处理;原因是我们做elasticsearch服务时,一般只会用到搜索,而数据一般由其它进程清洗后,插入到elasticsearch中。并不是由当前的服务来进行增、删、改。当然后续会陆续完善这一部分(也希望你们可以帮忙完善)。

这个client,我并不想加入http模块,因为我认为加入http,很容易会侵入了使用者原来的架构。因此,这只是做一个dsl的编码器;编码得到json,可由使用者当前架构的http模块调用。

以下是两个使用例子

#include "request.h"    using namespace es;  request r;  std::string dsl = r.size(10).source({ "id" }).query(regexp("name", ".*tiny.*"));  printf("%sn",  dsl.c_str());  // {"size":10,"_source":["id"],"query":{"regexp":{"name":".*tiny.*"}}}

#include "request.h"    using namespace es;  request r;  std::string dsl = r.size(10).source({"name"}).sort(      {makeobject("timestamp",makeobjectstring("order", "desc"))}      ).query(          range1(          "id",          makepair("lt",567)      ));  printf("%sn", dsl.c_str());  // {"size":10,"_source":["name"],"sort":[{"timestamp":{"order":"desc"}}],"query":{"range":{"id":{"lt":567}}}}

 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/602492.html

(0)
上一篇 2021年5月11日
下一篇 2021年5月11日

精彩推荐