c++ elasticsearch: 建向量类型的表

目录

api参考

kibana方式

建表

查表是否存在

删除表

连起来

python方式

curl方式

c++方式

查表是否存在

建表

json解析

连起来


api参考

  • 建表

    • https://www.elastic.co/guide/en/elasticsearch/reference/8.6/indices-create-index.html

    • https://www.elastic.co/guide/en/elasticsearch/reference/8.6/dense-vector.html

  • 查表存在

    • https://www.elastic.co/guide/en/elasticsearch/reference/8.6/indices-exists.html#indices-exists

  • 删除表

    • https://www.elastic.co/guide/en/elasticsearch/reference/8.6/indices-delete-index.html

kibana方式

建表

查表是否存在

删除表

连起来

python方式

put介绍:https://blog.csdn.net/weixin_34107955/article/details/91773495

import requests
import json

res = requests.head('http://xx:9200/test05')
print('查表是否存在-返回状态: ',res.status_code)

params = {
    "mappings": {
        "properties": {
            "c++_vector": {
                "type": "dense_vector",
                "dims": 3,
                "index": True,
                "similarity": "dot_product"
           }
       }
   }
}
header = {"Content-Type": "application/json"}
res = requests.put('http://xx:9200/test05',data=json.dumps(params),headers=header)
print('建表-返回状态: ',res.status_code)

res = requests.head('http://xx:9200/test05')
print('查表是否存在-返回状态: ',res.status_code)

res = requests.delete('http://xx:9200/test05')
print('删除表-返回状态: ',res.status_code)

res = requests.head('http://xx:9200/test05')
print('查表是否存在-返回状态: ',res.status_code)
查表是否存在-返回状态:  404
建表-返回状态:  200
查表是否存在-返回状态:  200
删除表-返回状态:  200
查表是否存在-返回状态:  404

curl方式

curl -X PUT "http://xx:9200/test06" -H 'Content-Type: application/json' -d'
{
    "mappings": {
        "properties": {
            "c++_vector": {
                "type": "dense_vector",
                "dims": 3,
                "index": true,
                "similarity": "dot_product"
           }
       }
   }
}
'

c++方式

  • head与get区别:https://zhuanlan.zhihu.com/p/311196515

查表是否存在
#include <iostream>
#include "third/httplib/httplib.h"
#include "third/nlohmann/json.hpp"

using namespace std;
using namespace httplib;
using namespace nlohmann;

int main()
{
    Client client("http://xx:9200");
    
    auto res = client.Get("/test04");
    int status_code = res->status;
    cout << "查表是否存在-返回状态码: " << status_code << endl;

}
查表是否存在-返回状态码: 404
建表

httplib参考:https://github.com/yhirose/cpp-httplib

json解析
#include <iostream>
#include "third/nlohmann/json.hpp"

using namespace std;
using namespace nlohmann;

int main()
{    
    auto params = json::parse(R"({ "mappings": {
        "properties": {
            "c++_vector": {
                "type": "dense_vector",
                "dims": 3,
                "index": true,
                "similarity": "dot_product" }
            }
            }
        })");
    cout << params["mappings"] << endl;
    cout << params["mappings"]["properties"] << endl;
    cout << params["mappings"]["properties"]["c++_vector"] << endl;
}
{"properties":{"c++_vector":{"dims":3,"index":true,"similarity":"dot_product","type":"dense_vector"}}}
{"c++_vector":{"dims":3,"index":true,"similarity":"dot_product","type":"dense_vector"}}
{"dims":3,"index":true,"similarity":"dot_product","type":"dense_vector"}
#include <iostream>
#include "third/httplib/httplib.h"
#include "third/nlohmann/json.hpp"

using namespace std;
using namespace httplib;
using namespace nlohmann;

int main()
{
    Client client("http://xx:9200");
    
    auto p = json::parse(R"({ "mappings": {
        "properties": {
            "c++_vector": {
                "type": "dense_vector",
                "dims": 3,
                "index": true,
                "similarity": "dot_product" }
            }
            }
        })");
    string strP = p.dump();
    auto res = client.Put("/test06", strP, "application/json");
    cout << res->status << endl;
}
200

kibana验证下

连起来
#include <iostream>
#include "third/httplib/httplib.h"
#include "third/nlohmann/json.hpp"

using namespace std;
using namespace httplib;
using namespace nlohmann;

int main()
{
    Client client("http://xx:9200");

    // 查表是否存在
    auto res = client.Get("/test06");
    auto status_code = res->status;
    cout << "查表是否存在-返回状态码: " << status_code << endl;

    // 建dense_vector类型的表
    auto params_json = json::parse(R"({ "mappings": {
        "properties": {
            "c++_vector": {
                "type": "dense_vector",
                "dims": 3,
                "index": true,
                "similarity": "dot_product" }
            }
            }
        })");
    string params_str = params_json.dump();
    res = client.Put("/test06", params_str, "application/json");
    status_code = res->status;
    cout << "建表-返回状态码: " << status_code << endl;

    // 查表是否存在
    res = client.Get("/test06");
    status_code = res->status;
    cout << "查表是否存在-返回状态码: " << status_code << endl;

    // 删除表
    res = client.Delete("/test06");
    status_code = res->status;
    cout << "删除表-返回状态码: " << status_code << endl;

    // 查表是否存在
    res = client.Get("/test06");
    status_code = res->status;
    cout << "查表是否存在-返回状态码: " << status_code << endl;
}
查表是否存在-返回状态码: 404
建表-返回状态码: 200
查表是否存在-返回状态码: 200
删除表-返回状态码: 200
查表是否存在-返回状态码: 404

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值