Elasticsearch索引操作
  1、RESTful接⼝格式
    ElasticSearch是⼀个基于Lucene的搜索服务器。它提供了⼀个分布式多⽤户能⼒的全⽂搜索引擎,基于RESTful web接⼝    其中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命令
      创建⼀个索引库
    2.2、Dev Tools
    GET _search
    {
      "query" : {
      "match_all" : {}
      }
    }
    2.3 head
  3、索引⽂档的创建
     3.1、curl命令
      windows下安装的CURL有可能不⽀持单引号,如果有报错,还请改成双引号,内部使⽤转义字符转义。
      添加-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接⼝如下
     4.3、Dev Tools
      GET /fendo/_search?pretty
      {
        "query": { "match_all": {} }
      }
      或
      POST /fendo/_search?pretty
      {
        "query": { "match_all": {} }
      }
  4、索引⽂档的更新
      根据索引时的ID更新的⽂档的内容其RESTful接⼝如下
      curl -XPUT "localhost:9200/fendo/account/222" -d "{\"first_name\":\"fk\"}
      说明更新成功curl是什么命令
  5、索引⽂档的删除
      根据索引时的ID更新的⽂档的内容其RESTful接⼝如下
      删除成功
  6、通过样例数据建⽴索引
    6.1、下载样例数据:
      下载样例数据集链接,解压数据到指定⽬录
     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、总结
    总结上⾯涉及到的命令⼤致如下:
     通过⽂件导⼊: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 "localhost:9200/fendo/account/222" -d "{\"first_name\":\"fk\"}
    5、查看所有索引:curl localhost:9200/_cat/indices?v

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。