通過rest api添加檢索數據,閱讀官方文檔可以發現,elasticsearch支持動態映射,但是其中有不少問題,且聽慢慢詳解。
本文主要講述三點內容:
1 Elasticsearch常用的rest api
2 Elasticsearch使用bulk命令添加索引數據
ES REST API
elasticsearch支持通過http請求響應服務,因此通過curl命令,可以發送http請求,並得到json返回內容。
常用的rest請求包括:
檢查ES集群狀態:
curl localhost:9200/_cat/health?v
檢查ES節點狀態:
curl localhost:9200/_cat/nodes?v
查詢所有的索引:
curl localhost:9200/_cat/indices?v
創建索引(這種方式在4.1版本下會出現問題,下一小節再說):
curl -XPUT localhost:9200/索引名字/類型/id -d {"name":"xingoo"}
刪除索引:
curl -XDELETE localhost:9200/索引名字
查詢索引:
curl -XGET localhost:9200/索引名字/類型名字/id
ES 使用bulk 添加數據
動態映射無法添加數據,不要擔心!可以使用bulk命令,添加json文件內的數據。
1 定義json數據文件:
{"index":{"_index":"aaa123","_id":1}} {"name":"xingoo","age":25} {"index":{"_index":"aaa123","_id":2}} {"name":"test111","age":31} {"index":{"_index":"aaa123","_id":3}} {"name":"test222","age":42} {"index":{"_index":"aaa123","_id":4}} {"name":"test333","age":13}
注意的是,json文件名稱隨意指定,第一行定義了索引和一些常用字段:
_index定義了索引的名稱,如果沒有指定需要在curl命令中添加索引名稱字段
_type定義了索引的類型,如果沒有指定需要在curl命令中添加索引類型字段
_id定義了該行數據的id,如果沒有指定,會隨機生成一串數字。
2 執行命令
進入到json文件所在的目錄,執行命令
curl localhost:9200/索引名稱/索引類型/_bulk?pretty --data-binary @data.json
注意的是:
如果json文件中定義了_index和_type,那么這里可以不寫變成(即便寫了也會按照json文件中的生成)
curl localhost:9200/_bulk?pretty --data-binary @data.json
類似的,如果按照上面我們定義了_index卻沒有定義_type,那么索引會是aaa123,類型為我們curl命令中指定的類型。
可以看到上面雖然指定了索引名稱為bbb123,類型為ccc123,但是json文件中指定了索引名稱為aaa123。
最后的索引文件中,索引名稱為aaa123,類型為ccc123。
查詢索引狀態,可以發現正常了。