Elasticsearch 索引操作


  1、RESTful接口格式

    ElasticSearch是一個基於Lucene的搜索服務器。它提供了一個分布式多用戶能力的全文搜索引擎,基於RESTful web接口

    URL的格式:http://localhost:9200/<index>/<type>/[<id>]  

    其中index、type是必須提供的。

    id是可選的,不提供es會自動生成。

    index、type將信息進行分層,利於管理。

    index可以理解為數據庫;type理解為數據表;id相當於數據庫表中記錄的主鍵,是唯一的。

  

   2、HTTP客戶端

    操作REST API常用的有通過CRUL命令,Chrome Sense插件,httpie,kibana中的Dev Tools,head等,下面主要介紹CRUL命令、kibana中的Dev Tools工具和head

 

    2.1、curl命令

      curl命令相關用法參考:http://www.cnblogs.com/shaosks/p/7483322.html

      創建一個索引庫

      

    2.2、Dev Tools

      

    GET _search
    {
      "query" : {
      "match_all" : {}
      }
    }

      

 

    2.3 head

      

   3、索引文檔的創建

      格式:http://127.0.0.1:9200/<index>/<type>/id  

     3.1、curl命令

      windows下安裝的CURL有可能不支持單引號,如果有報錯,還請改成雙引號,內部使用轉義字符轉義。

      例如:curl -XPUT http://localhost:9200/test1/es/1 -d "{\"first_name\":\"test1\"}"

      添加-d參數,在后台以守護進程模式運行

      

 

      索引名字是:test1;
      索引的類型是:es;
      本記錄的id是:1

      

     3.2、Dev Tools

      

 

  4、索引文檔的查詢

    4.1、請求參數方式

      curl 127.0.0.1:9200/fendo/_search?q=*

      

    4.2、請求體方式(推薦這種方式)

      windows下安裝的CURL有可能不支持單引號,如果有報錯,還請改成雙引號,內部使用轉義字符轉義。

      curl -XPOST 127.0.0.1:9200/fendo/_search?pretty -d "{\"query\": { \"match_all\": {} }}"

      

      根據索引時的ID查詢的文檔的RESTful接口如下

      curl -XGET "http://127.0.0.1:9200/fendo/account/25" 或  curl -XGET http://127.0.0.1:9200/fendo/account/25  后面的雙引號可以不要

      

 

      4.3、Dev Tools

      GET /fendo/_search?pretty
      {

        "query": { "match_all": {} }

      }

      或

      POST /fendo/_search?pretty
      {

        "query": { "match_all": {} }

      }

      

 

   4、索引文檔的更新

      根據索引時的ID更新的文檔的內容其RESTful接口如下

      curl -XPUT "http://localhost:9200/fendo/account/222" -d "{\"first_name\":\"fk\"}

      

      查詢一下:curl -XGET http://127.0.0.1:9200/fendo/account/222

      

      說明更新成功

   

  5、索引文檔的刪除

      根據索引時的ID更新的文檔的內容其RESTful接口如下

      curl -XDELETE http://127.0.0.1:9200/fendo/account/222

      

      

      刪除成功

 

 

 

  6、通過樣例數據建立索引

    6.1、下載樣例數據:accounts.zip

      下載樣例數據集鏈接,解壓數據到指定目錄

      

     6.2、創建一個索引庫:

      curl -XPUT 127.0.0.1:9200/test_index

      

 

     6.3、導入數據

        相對路徑:curl -XPOST 127.0.0.1:9200/bank/account/_bulk?pretty --data-binary @accounts.json

        accounts.json文件必須在elasticsearch-5.5.2\bin路徑下

 

        

        注意:

        1、 需要在accounts.json所在的目錄運行curl命令。

        2、 127.0.0.1:9200是ES得訪問地址和端口

        3、 bank是索引的名稱

        4、 account是類型的名稱

        5、 索引和類型的名稱在文件中如果有定義,可以省略;如果沒有則必須要指定

        6、 _bulk是rest得命令,可以批量執行多個操作(操作是在json文件中定義的,原理可以參考之前的翻譯)

        7、 pretty是將返回的信息以可讀的JSON形式返回。

 

        如果文件accounts.json 在 example_data文件夾中,二example_data文件夾在當前運行命令目錄的前前一個目錄里面,即example_data和elasticsearch-5.5.2目錄是並列的,則命令格式如下:

        curl -XPOST 127.0.0.1:9200/aaa/bbb/_bulk?pretty --data-binary "@..\..\example_data/accounts.json"

        或 可以不要雙引號

        curl -XPOST 127.0.0.1:9200/aaa/bbb/_bulk?pretty --data-binary @..\..\example_data/accounts.json

        或 

        curl -XPOST 127.0.0.1:9200/aaa/bbb/_bulk?pretty --data-binary @..\..\example_data\accounts.json

        注意命令格式中最后的/和\都可以

        查看導入的aaa索引,

        curl -XPOST 127.0.0.1:9200/aaa/_search?pretty -d "{\"query\": { \"match_all\": {} }}"

 

        

 

  7、查看所有索引索引

    curl localhost:9200/_cat/indices?v
    或
    curl "localhost:9200/_cat/indices?v"
    

    

 

  8、查看集群狀態

      curl 127.0.0.1:9200/_cat/health?v

       

      

      127.0.0.1是主機的地址,9200是監聽的端口號,ES默認監聽的端口號就是9200.

      這里需要注意的是,windows下安裝的CURL有可能不支持單引號,如果有報錯,還請改成雙引號,內部使用轉義字符轉義。

      得到的相應結果。

      可以看到集群的名字是默認的"elasticsearch",集群的狀態時"green"。這個顏色之前也有說過:

      1 、綠色,最健康的狀態,代表所有的分片包括備份都可用

      2 、黃色,基本的分片可用,但是備份不可用(也可能是沒有備份)

      3 、紅色,部分的分片可用,表明分片有一部分損壞。此時執行查詢部分數據仍然可以查到,遇到這種情況,還是趕快解決比較好。

      上面的結果還可以看到,目前有一個節點,但是沒有分片,這是因為我們的ES中還沒有數據,一次也就沒有分片。

 

      當使用elasticsearch作為集群名字時,會使用單播,查詢本機上是否還運行着其他的節點。如果有,則組成一個集群。

      (如果使用其他的名字作為集群名字,那么就可能采用多播了!這個在工作中,經常會遇到,大家使用的是一個集群名字,分片總是被搞在一起,導致有人的機器下線后,自己的也無法使用)

 

      通過下面的命令,可以查詢節點的列表:

      curl 127.0.0.1:9200/_cat/nodes?v

      

 

 

  9、總結

    總結上面涉及到的命令大致如下:

    1、創建索引:curl -XPUT http://localhost:9200/test1/es/1 -d "{\"first_name\":\"test1\"}"

        通過文件導入:curl -XPOST 127.0.0.1:9200/bank/account/_bulk?pretty --data-binary @accounts.json

    2、查詢索引:curl -XPOST 127.0.0.1:9200/aaa/_search?pretty -d "{\"query\": { \"match_all\": {} }}"

            curl -XGET 127.0.0.1:9200/aaa/_search?pretty -d "{\"query\": { \"match_all\": {} }}"

            curl -XGET 127.0.0.1:9200/aaa/bbb/222

    3、修改索引:curl -XPUT "http://localhost:9200/fendo/account/222" -d "{\"first_name\":\"fk\"}

    4、刪除索引:curl -XDELETE http://127.0.0.1:9200/fendo/account/222

    5、查看所有索引:curl localhost:9200/_cat/indices?v

 

 
        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM