• 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

    
    
    
  • 相关阅读:
    cf 811c Vladik and Memorable Trip
    Codeforces 837D--Round Subset (DP)
    codeforces798C
    Codeforces 814C
    CodeForces 610D Vika and Segments
    CodeForces 593D Happy Tree Party
    hdu 5564 Clarke and digits
    hdu 5517 Triple
    codeforces 584E Anton and Ira [想法题]
    codeforces 582A GCD Table
  • 原文地址:https://www.cnblogs.com/shaosks/p/7483595.html
Copyright © 2020-2023  润新知