1. 程式人生 > 其它 >Elasticsearch 批量增刪改查

Elasticsearch 批量增刪改查

技術標籤:Elasticsearch實戰elasticsearch

Elasticsearch實戰

step1

準備三條資料

PUT /technology/type/1
{
"title":"ES搜尋引擎",
"content":"Elasticsearch是一個基於Lucene的搜尋伺服器。",
"creator":"Lucene",
"cost":60
}

PUT /technology/type/2
{
"title":"Solr搜尋引擎",

"content":"Solr是一個高效能,採用Java開發,基於Lucene的全文搜尋伺服器",
"creator":"Lucene",
"cost":20
}


PUT /technology/type/3
{
"title":"RocketMQ",
"content":"訊息佇列 RocketMQ 版(原ONS)是阿里雲基於 Apache RocketMQ構建的低延遲、高併發、高可用、高可靠的分散式訊息中介軟體。",
"creator":"Alibaba",
"cost":30
}

step2

批量查詢

GET /_mget
{
  "docs":[
    {
      "_index":"technology",
      "_type":"type",
      "_id":1
    },
    {
      "_index":"technology",
      "_type":"type",
      "_id":2
    }
  ]
}

GET /technology/_mget
{
  "docs":[
    {
      "_type":"type",
      "_id":1
    },
    {
      "_type":"type",
      "_id":2
    }
  ]
}

GET /technology/type/_mget
{
  "docs":[
    {
      "_id":1
    },
    {
      "_id":2
    }
  ]
}

GET /technology/type/_mget
{
  "ids":[1,2]
}

step3

批量增刪改bulk語法

有哪些型別的操作可以執行呢?
(1)delete:刪除一個文件,只要1個json串就可以了
(2)create:PUT /index/type/id/_create,強制建立
(3)index:普通的put操作,可以是建立文件,也可以是全量替換文件
(4)update:執行的partial update操作

bulk api對json的語法,有嚴格的要求,每個json串不能換行,只能放一行,同時一個json串和一個json串之間,必須有一個換行

POST /_bulk
{"index":{"_index":"technology","_type":"type","_id":4}}
{"title":"Groovy","content":"Groovy是一種基於JVM(Java虛擬機器)的敏捷開發語言","creator":"Apache","cost":80}
{"update":{"_index":"technology","_type":"type","_id":4}}
{"doc":{"creator":"Alibaba"}}
{"create":{"_index":"technology","_type":"type","_id":4}}
{"creator":"Apache"}
{"delete":{"_index":"technology","_type":"type","_id":4}}

或者

POST /technology/type/_bulk
{"index":{"_id":4}}
{"title":"Groovy","content":"Groovy是一種基於JVM(Java虛擬機器)的敏捷開發語言","creator":"Apache","cost":80}
{"update":{"_id":4}}
{"doc":{"creator":"Alibaba"}}
{"create":{"_id":4}}
{"creator":"Apache"}
{"delete":{"_id":4}}

細心的讀者會發現,我們剛開始的三條資料可以通過以下命令批量執行

POST /technology/type/_bulk
{"index":{"_id":1}}
{"title":"ES搜尋引擎","content":"Elasticsearch是一個基於Lucene的搜尋伺服器。","creator":"Lucene","cost":60}
{"index":{"_id":2}}
{"title":"Solr搜尋引擎","content":"Solr是一個高效能,採用Java開發,基於Lucene的全文搜尋伺服器","creator":"Lucene","cost":20}
{"index":{"_id":3}}
{"title":"RocketMQ","content":"訊息佇列 RocketMQ 版(原ONS)是阿里雲基於 Apache RocketMQ構建的低延遲、高併發、高可用、高可靠的分散式訊息中介軟體。","creator":"Alibaba","cost":30}

歡迎關注公眾號《小馬JAVA》