成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何通過Curl方式進行ElasticSearch增刪改查

數據庫 其他數據庫
關于ElasticSearch增刪改查的方法有很多,使用Curl操作命令總結如下。

關于ElasticSearch增刪改查的方法有很多,使用curl操作命令總結如下,如有需要可以點擊收藏。

1、ElasticSearch新增數據

如果進行一個類似于SQL的 insert的操作

insert into users(name,age,email) values('ctt',18,'ctt@abc.com')

具體示例如下:

curl -XPOST "http://127.0.0.1:9200/users/_doc" -H "Content-Type: application/json" -d '
{
"name": "ctt",
"age": 18,
"email": "ctt@abc.com"
}'

上面的命令使用HTTP POST方法向名為"users"的索引中添加一條文檔,文檔包含"name"、"age"和"email"三個字段。其中,-X選項指定HTTP請求的方法,-H選項指定HTTP請求的頭部信息,-d選項指定HTTP請求的數據體。

寫了多條記錄,便于后面進行測試,結果如下:

{"took":1,"timed_out":false,"_shards":{"total":5,"successful":5,"skipped":0,"failed":0},"hits":{"total":5,"max_score":1.0,"hits":[{"_index":"users","_type":"_doc","_id":"Uxz2jYYBNjbWHoXGCfXa","_score":1.0,"_source":
{
"name": "jgt",
"age": 29,
"email": "jgt@abc.com"
}},{"_index":"users","_type":"_doc","_id":"UBz0jYYBNjbWHoXGufWJ","_score":1.0,"_source":
{
"name": "ttc",
"age": 20,
"email": "ttc@abc.com"
}},{"_index":"users","_type":"_doc","_id":"URz1jYYBNjbWHoXGOvU0","_score":1.0,"_source":
{
"name": "tt",
"age": 25,
"email": "tt@abc.com"
}},{"_index":"users","_type":"_doc","_id":"Uhz1jYYBNjbWHoXGhPWI","_score":1.0,"_source":
{
"name": "att",
"age": 27,
"email": "att@abc.com"
}},{"_index":"users","_type":"_doc","_id":"TxzvjYYBNjbWHoXG-fUx","_score":1.0,"_source":
{
"name": "ctt",
"age": 18,
"email": "ctt@abc.com"
}}]}}

可以用pretty加以修飾,結果集顯示如下

: {
"name" : "ttc",
"age" : 20,
"email" : "ttc@abc.com"
}
},
{
"_index" : "users",
"_type" : "_doc",
"_id" : "URz1jYYBNjbWHoXGOvU0",
"_score" : 1.0,
"_source" : {
"name" : "tt",
"age" : 25,
"email" : "tt@abc.com"
}
},
{
"_index" : "users",
"_type" : "_doc",
"_id" : "Uhz1jYYBNjbWHoXGhPWI",
"_score" : 1.0,
"_source" : {
"name" : "att",
"age" : 27,
"email" : "att@abc.com"
}
},
{
"_index" : "users",
"_type" : "_doc",
"_id" : "TxzvjYYBNjbWHoXG-fUx",
"_score" : 1.0,
"_source" : {
"name" : "ctt",
"age" : 18,
"email" : "ctt@abc.com"
}
}
]
}
}

如果新增的文檔ID由Elasticsearch自動生成,可以將"_doc"替換為"_create",這樣在新增數據時,Elasticsearch會在響應中返回文檔ID,示例如下:

curl -XPOST "http://127.0.0.1:9200/users/_create" -H "Content-Type: application/json" -d '
{
"name": "ctty",
"age": 30,
"email": "ctty@abc.com"
}'

2、更新記錄

進行一次類似如下update的操作

update users set age=30 where name='jgt'

可以使用Elasticsearch的Update By Query API來根據條件更新數據。Update By Query API可以對符合特定條件的所有文檔進行更新操作。以下是一個使用curl更新滿足條件的文檔的示例:

curl -XPOST "http://127.0.0.1:9200/users/_update_by_query" -H "Content-Type: application/json" -d '
{
"query": {
"term": {
"name": "jgt"
}
},
"script": {
"source": "ctx._source.age = params.new_age",
"params": {
"new_age": 30
}
}
}'

更新完成后查看結果如下:

上面的命令使用HTTP POST方法向名為"users"的索引中name為“jgt”的所有文檔的年齡為30。其中:

-X選項指定HTTP請求的方法
-H選項指定HTTP請求的頭部信息
-d選項指定HTTP請求的數據體
"query"字段表示查詢條件:"term"表示匹配字段的值等于給定值,"name"字段表示要匹配的字段,"jgt"表示要匹配的值。
"script"字段表示更新腳本:"source"表示要執行的腳本,"ctx._source.age"表示要更新的字段,"params"表示要傳入的參數,"new_age"表示要更新成的新值。

除了使用Update By Query API,還可以使用Bulk API和Update API對數據進行更新。

Bulk API可以批量處理多個文檔的更新、插入和刪除操作。以下是一個使用curl批量更新文檔的示例:

curl -XPOST "http://127.0.0.1:9200/users/_bulk" -H "Content-Type: application/json" -d '
{ "update": {"_id": "1", "_index": "users"} }
{ "doc": {"age": 16} }
{ "update": {"_id": "2", "_index": "users"} }
{ "doc": {"age": 16} }
'

上面的命令使用HTTP POST方法向名為"users"的索引中批量更新文檔的age。其中:-X選項指定HTTP請求的方法,-H選項指定HTTP請求的頭部信息,-d選項指定HTTP請求的數據體,"update"表示更新操作,"_id"表示要更新的文檔ID,"_index"表示要更新的索引名,"doc"表示要更新的字段和值。

Update API可以對單個文檔進行更新操作。以下是一個使用curl更新單個文檔的示例:

curl -XPOST "http://127.0.0.1:9200/users/_doc/1/_update" -H "Content-Type: application/json" -d '
{
"doc": {
"age": 16
}
}'

上面的命令使用HTTP POST方法向名為"users"的索引中更新ID為1的文檔的age為16。其中,-X選項指定HTTP請求的方法,-H選項指定HTTP請求的頭部信息,-d選項指定HTTP請求的數據體,"_doc"表示要更新的文檔類型,"1"表示要更新的文檔ID,"doc"表示要更新的字段和值。

需要注意的是,Bulk API和Update API都支持批量操作和復雜的更新操作,可以根據具體需求進行使用。同時,更新操作會修改原始數據,因此需要謹慎操作。

3、刪除記錄

進行一次類似如下update的操作

delete from users  where name='jgt

可以使用Elasticsearch的Delete By Query API和Delete API來刪除數據。

Delete By Query API可以根據特定條件刪除文檔。以下是一個使用curl刪除滿足條件的文檔的示例:

curl -XPOST "http://127.0.01:9200/users/_delete_by_query" -H "Content-Type: application/json" -d '
{
"query": {
"term": {
"name": "att"
}
}
}'

上面的命令使用HTTP POST方法向名為"users"的索引中刪除"name"為"att"的所有文檔。其中,-X選項指定HTTP請求的方法,-H選項指定HTTP請求的頭部信息,-d選項指定HTTP請求的數據體,"query"字段表示查詢條件,"term"表示匹配字段的值等于給定值,"name"字段表示要匹配的字段,"att"表示要匹配的值。

Delete API可以刪除單個文檔。以下是一個使用curl刪除單個文檔的示例:

curl -XDELETE "http://127.0.0.1:9200/users/_doc/1"

上面的命令使用HTTP DELETE方法向名為"users"的索引中刪除ID為1的文檔。其中,-X選項指定HTTP請求的方法,"_doc"表示要刪除的文檔類型,"1"表示要刪除的文檔ID。

需要注意的是,刪除操作會永久刪除數據,因此需要謹慎操作。建議在進行刪除操作前進行備份操作,以防止誤操作造成數據丟失。

4、查詢記錄

Elasticsearch提供了豐富的查詢方式,可以根據具體的業務需求進行選擇。以下是幾種常用的查詢方式:

(1)Match Query

根據給定的查詢條件在指定字段中進行匹配。例如,下面的查詢可以匹配"my_field"字段中包含"my_value"的文檔:

{ "query": { "match": { "my_field": "my_value" } } }

具體示例如下:

curl -XGET "http://127.0.0.1:9200/users/_search?pretty" -H "Content-Type: application/json" -d '
{
"query": {
"match": {
"name": "tt"
}
}
}'

查詢結果如下:

(2)Term Query

根據給定的查詢條件在指定字段中進行精確匹配。

例如,下面的查詢可以匹配"my_field"字段中值為"my_value"的文檔:

{ "query": { "term": { "my_field": "my_value" } } }

具體示例如下:

curl -XGET "http://127.0.0.1:9200/users/_search?pretty" -H "Content-Type: application/json" -d '
{
"query": {
"term": {
"name": "ctt"
}
}
}'

查詢結果如下:

(3)Range Query

根據給定的范圍查詢條件在指定字段中進行匹配。

例如,下面的查詢可以匹配"my_field"字段中值在10到20之間的文檔:

{ "query": { "range": { "my_field": { "gte": 10, "lte": 20 } } } }

具體示例如下:

curl -XGET "http://127.0.0.1:9200/users/_search?pretty" -H "Content-Type: application/json" -d '
{
"query": {
"range": {
"age": {
"gte": 10,
"lte": 20
}
}
}
}'

查詢結果如下:

(4)Bool Query

根據給定的多個查詢條件進行組合查詢。

例如,下面的查詢可以匹配"my_field1"字段中值包含"my_value1"并且"my_field2"字段中值包含"my_value2"的文檔:

{ "query": 
{ "bool":
{ "must": [ { "match": { "my_field1": "my_value1" } },
{ "match": { "my_field2": "my_value2" } }
]
} } }

具體示例如下:

curl -XGET "http://127.0.0.1:9200/users/_search?pretty" -H "Content-Type: application/json" -d '
{
"query": {
"bool": {
"must": [
{ "match": { "name": "ctt" } },
{ "match": { "age": "18" } }
]
}
}
}'

查詢結果如下:

(5)多條件查詢

在Elasticsearch中,可以使用布爾查詢(Bool Query)來進行多個條件查詢。Bool查詢包含三種類型的子查詢:must、should和must_not。

must查詢:所有的查詢條件都必須匹配才能返回文檔。可以使用多個must子句來構建復雜的查詢。
should查詢:至少有一個查詢條件匹配時返回文檔。可以使用多個should子句來構建復雜的查詢。
must_not查詢:所有的查詢條件都不能匹配才能返回文檔。

下面是一個示例,演示如何使用Bool查詢來同時匹配多個條件:

{
"query": {
"bool": {
"must": [
{ "match": { "field1": "value1" } },
{ "match": { "field2": "value2" } }
],
"should": [
{ "match": { "field3": "value3" } },
{ "match": { "field4": "value4" } }
],
"must_not": [
{ "match": { "field5": "value5" } }
]
}
}
}

在上面的示例中,查詢條件包括:

必須匹配field1為value1的文檔;
必須匹配field2為value2的文檔;
至少匹配一個should子句,其中field3為value3或field4為value4;
不匹配field5為value5的文檔。

可以根據實際情況修改查詢條件。具體示例如下:

curl -XGET "http://127.0.0.1:9200/users/_search?pretty" -H "Content-Type: application/json" -d '
{
"query": {
"bool": {
"must": [
{ "match": { "name": "ctt" } },
{ "match": { "age": "18" } }
],
"should": [
{ "match": { "name": "tt" } },
{ "match": { "age": "18" } }
],
"must_not": [
{ "match": { "name": "jgt" } }
]
}
}
}'

查詢結果:

(6)組合查詢

類似于如下SQL的組合條件查詢

select * from users where (name like '%ctt%' or name like '%tt%') and age >=10 and age<=2

具體示例如下:

curl -XGET "http://127.0.0.1:9200/users/_search?pretty" -H "Content-Type: application/json" -d '
{
"query": {
"bool": {
"should": [
{ "match": { "name": "ctt" } },
{ "match": { "name": "tt" } }
],
"filter": {
"range": {
"age": {
"gte": 10,
"lte": 20
}
}
}
}
}
}'

查詢結果如下:

需要注意的是,查詢操作的結果可以通過Elasticsearch的排序、過濾、聚合等方式進行處理,以滿足不同的業務需求。同時,查詢操作也會占用Elasticsearch的系統資源,因此需要謹慎使用,建議根據具體的業務需求選擇合適的查詢方式。

5、小結

ElasticSearch的使用場景和常見的操作命令和方式均很多,后續多總結歸納。

責任編輯:姜華 來源: 今日頭條
相關推薦

2020-10-29 08:39:45

JSONJava對象

2024-11-18 00:22:34

2019-11-07 15:39:36

數據庫MySQL文章

2023-06-08 08:13:43

2023-09-05 07:40:37

PythonSDKAPI

2012-04-19 10:06:16

ibmdw

2024-08-29 08:58:30

JPA編寫數據操

2025-04-11 10:13:00

數據庫APIFastAPI

2009-11-12 09:18:40

ASP.NET MVC

2021-07-05 09:24:06

MySQL SQL 語句數據庫

2012-03-21 09:49:42

Java

2024-09-02 09:26:28

2012-04-12 09:23:15

達夢數據庫

2009-11-13 15:54:26

ADO.NET數據庫操

2020-05-28 16:50:59

源碼分析 MybatisJava

2022-08-01 09:44:07

架構MySQL數據庫

2023-09-01 08:46:44

2018-01-18 10:53:31

LinuxUnixcurl命令

2020-12-22 08:41:21

GolangPostgreSQL數據庫

2015-03-06 15:43:39

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲视频免费 | 亚洲性爰| 91精品久久 | 超碰在线人人干 | 伊人免费在线观看 | 欧美一级欧美三级在线观看 | 中文字幕成人av | 亚洲国产一区二区三区在线观看 | 久久99网 | 免费在线色| 亚洲日本成人 | 亚洲黄色网址视频 | 国产一区二区三区在线 | 99久久精品免费看国产高清 | 精品少妇一区二区三区在线播放 | 亚洲免费一区二区 | 四虎在线观看 | 亚洲高清视频在线观看 | 久久成人综合 | 久久久久国产一区二区 | 人人澡人人爱 | 国产日韩欧美在线 | 男女羞羞视频在线 | 成人在线视频网 | 中文字幕视频在线 | 欧美精品一区二区在线观看 | 欧美 日韩 国产 成人 在线 91 | 91传媒在线观看 | 日韩欧美在线免费观看 | 久久久国产一区 | 成人免费小视频 | 成人av在线播放 | 日本不卡在线视频 | 久久曰视频 | aaaaaaa片毛片免费观看 | 特黄色毛片| 日韩精品不卡 | 天天爽天天操 | www国产亚洲精品 | 亚洲一区二区三区视频在线 | 一级毛片色一级 |