功能 : 文档存储 与 文档搜索
特点:比如有一个文档名 "你好"
可以用'你','好','你好'都可以搜索到这个文档
ES核心概念
类似于数据库中表的概念,在表的概念下又对数据集合进行了细分

ES_Client查询接口
cpr::Response search(const std::string &indexName,
const std::string &docType,
const std::string &body,
const std::string &routing = std::string());
indexName:索引名称
docType:类型几乎弃用 _doc 填入
body: 请求正文 数据操作json字符串
创建与新增索引
cpr::Response index(const std::string &indexName,
const std::string &docType,
const std::string &id,
const std::string &body,
const std::string &routing = std::string());
indexName:索引名称
docType:类型几乎弃用 _doc 填入
id:数据ID 可以自己指定唯一数也可以被es生成
body:创建索引的json正文
删除
cpr::Response remove(const std::string &indexName,
const std::string &docType,
const std::string &id,
const std::string &routing = std::string());
具体的操作
Response
我们需要获取状态码与其他的一些响应
status_code 状态码
text 响应正文
9200
#include <elasticlient/client.h>
#include <cpr/response.h>
#include <iostream>
int main()
{
elasticlient::Client client({"http://127.0.0.1:9200/"});
try
{
// auto resp=client.search("usr","_doc", "{\"query\": { \"match_all\":{} } }");
std::string search_body = R"({"query": { "match_all":
{} } })";
cpr::Response retrievedDocument = client.search(
"user", "_doc", search_body);
std::cout << retrievedDocument.status_code << std::endl;
std::cout << retrievedDocument.text << std::endl;
}
catch (const std::exception &e)
{
std::cerr << e.what() << '\n';
}
}
json 序列化与反序列化
以明文字符窜进行数据组织 --- 容易看懂
以键值对信息进行组织
{
"姓名":"张三",
"年龄": 88 ,
"成绩": [100,98,98]
}
json:Value
数据进行序列化时,需要将数据存储到Value中,再对Value进行序列化
operator[] : Value["姓名"]="张三"
对数组进行新增 Value["成绩"].append(88)
Value["姓名"].asString()
通过下边访问数组
Value["成绩"][1]
Writer类
将Value类进行序列化输出到一个流中
writer的工厂类
Reader
反序列化函数
工厂类
newCharReader类 返回一个CharReader