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.2in路径下

        

        注意:

        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_dataaccounts.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



原文地址:https://www.cnblogs.com/shaosks/p/7483595.html