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