当前位置: 移动技术网 > IT编程>开发语言>C/C++ > 一个C++的ElasticSearch Client

一个C++的ElasticSearch Client

2019年08月01日  | 移动技术网IT编程  | 我要评论

苜蓿怎么吃,北京旅游网站,gujiaguo

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("%s\n",  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("%s\n", dsl.c_str());
// {"size":10,"_source":["name"],"sort":[{"timestamp":{"order":"desc"}}],"query":{"range":{"id":{"lt":567}}}}

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网