ES的简单讲解

功能 : 文档存储 与 文档搜索

特点:比如有一个文档名 "你好"

可以用'你','好','你好'都可以搜索到这个文档

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

​

​

相关推荐
倒头就睡的小比特3 天前
算法竞赛C++常用的STL
c++·算法
weilx12343 天前
C++笔记-文件IO-<fcntl.h>
c++
譕痕3 天前
JSONObject与JSONArray封装数据格式区别
java·json
A黄俊辉A3 天前
uniapp webview中实现 app和内嵌的H5双向通信
vue.js·json
虎头金猫3 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
Smileyqp沛沛4 天前
前端?C++ ?较大差异基础罗列
c++·基础·前端转c++
C语言小火车4 天前
C/C++ 为什么需要编译器?
开发语言·c++
旖旎夜光4 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
吞下星星的少年·-·4 天前
C++ 萌新语法入门篇
c++·算法比赛
霍霍的袁4 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio