美文网首页
ElasticSearch的基本操作

ElasticSearch的基本操作

作者: 蓝胖子的白日梦丶 | 来源:发表于2020-08-07 09:02 被阅读0次

    操作ES的RESTful语法

    GET请求:
     http://ip:port/index :查询索引信息
     http://ip:port/index/type/doc_id :查询指定的文档信息
    POST请求:
     http://ip:port/index/type/_search: 查询文档,可以在请求体中添加json字符串来代表查询条件
     http://ip:port/index/type/doc_id/_update: 修改文档,在请求体中添加json字符串来代表修改的信息
    PUT请求:
     http://ip:port/index : 创建一个索引,需要在请求体中指定索引的信息
     http://ip:port/index/type/_mappings:代表创建索引时,指定索引文档存储属性的信息
    DELETE 请求:
     http://ip:port/index: 删除跑路
     http://ip:port/index/type/doc_id:  删除指定的文档
    

    索引的操作

    1、创建一个索引

    #创建一个索引
    #number_of_shards  分片
    #number_of_replicas 备份
    PUT /person
    {
     "settings": {
     "number_of_shards": 5, 
     "number_of_replicas": 1
     }
    }
    

    2、查看一个索引

    kibana-Managemengt
    1.management
    2.
    #查看索引信息
    GET /person</pre>
    

    3、删除一个索引

    1.management
    2.
    #删除索引
    DELETE /person</pre>
    

    3.4 ES中Field可以指定的类型

    字符串类型:

    • text:一般用于全文检索,将当前field 进行分词
    • keyword:当前field 不会进行分词

    数值类型:

    • long:
    • Intger:
    • short:
    • byte:
    • double:
    • float:
    • half_float: 精度比float 小一半
    • scaled_float:根据一个long 和scaled 来表达一个浮点型 long-345, -scaled 100 ->3.45

    时间类型:

    • date类型,根据时间类型指定具体的格式
    PUT my_index
          {
          "mappings": {
              "_doc": {
                  "properties": {
                      "date": {
                          "type":   "date",
                          "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
                      }
                  }
              }
           }
        }
    

    布尔类型:

    • boolean 类型,表达true 和false

    二进制类型:

    • binary类型暂时支持Base64编码的字符串

    范围类型:

    • integer_range:
    • float_range:
    • long_range:赋值时,无需指定具体的内容,只需存储一个范围即可,gte,lte,gt,lt
    • double_range:
    • date_range:
    • ip_range:
    PUT range_index
    {
      "settings": {
        "number_of_shards": 2
      },
      "mappings": {
        "_doc": {
          "properties": {
            "expected_attendees": {
              "type": "integer_range"
            },
            "time_frame": {
              "type": "date_range", 
              "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
            }
          }
        }
      }
    }
    
    PUT range_index/_doc/1?refresh
    {
      "expected_attendees" : { 
        "gte" : 10,
        "lte" : 20
      },
      "time_frame" : { 
        "gte" : "2015-10-31 12:00:00", 
        "lte" : "2015-11-01"
      }
    }
    

    经纬度类型:

    • geo_point:用来存储经纬度

    IP类型:

    • ip:可以存储IPV4 和IPV6

    其他的数据类型,参考官网

    https://www.elastic.co/guide/en/elasticsearch/reference/6.8/mapping-types.html 官方 文档

    创建索引并指定数据结构

    PUT /book
    {
      "settings": {
        #分片数
        "number_of_shards": 5,
        #备份数
        "number_of_replicas": 1
      },
      #指定数据类型
     "mappings": {
        #类型 Type
       "novel":{
        #文档存储的field
         "properties":{
           #field属性名
           "name":{
             #类型
             "type":"text",
             #指定分词器
             "analyzer":"ik_max_word",
             #指定当前的field可以被作为查询的条件
             "index":true,
             #是否需要额外存储
             "store":false
           },
           "author":{
             "type":"keyword"
           },
           "count":{
             "type":"long"
           },
           "on-sale":{
             "type":"date",
               #指定时间类型的格式化方式
             "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
           },
            "descr":{
              "type":"text",
              "analyzer":"ik_max_word"
           }
         }
       }
     }
    }
    

    文档操作

    文档在ES服务中的唯一标识, _indx_type_id 三个内容为组合,锁定一个文档,操作时添加还时修改操作

    1、新建文档

    自动生成id

    #添加文档,自动生成id
    POST /book/novel
    {
      "name":"盘龙",
      "author":"我吃西红柿",
      "count":100000,
      "on-sale":"2001-01-01",
      "descr":"大小的血睛鬃毛狮,力大无穷的紫睛金毛猿,毁天灭地的九头蛇皇,携带着毁灭雷电的恐怖雷龙……这里无奇不有,这是一个广博的魔幻世界。强者可以站在黑色巨龙的头顶遨游天际,恐怖的魔法可以焚烧江河,可以毁灭城池,可以夷平山岳……"
    }
    

    手动指定id

    #添加文档,手动指定id
    PUT /book/novel/1
    {
      "name":"红楼梦",
      "author":"曹雪芹",
      "count":10000000,
      "on-sale":"2501-01-01",
      "descr":"中国古代章回体长篇小说,中国古典四大名著之一,一般认为是清代作家曹雪芹所著。小说以贾、史、王、薛四大家族的兴衰为背景,以富贵公子贾宝玉为视角,以贾宝玉与林黛玉、薛宝钗的爱情婚姻悲剧为主线,描绘了一批举止见识出于须眉之上的闺阁佳人的人生百态,展现了真正的人性美和悲剧美"
    }
    

    2、修改文档

    覆盖式修改

    #添加文档,手动指定id
    PUT /book/novel/1
    {
      "name":"红楼梦",
      "author":"曹雪芹",
      "count":1000444,
      "on-sale":"2501-01-01",
      "descr":"中国古代章回体长篇小说,中国古典四大名著之一,一般认为是清代作家曹雪芹所著。小说以贾、史、王、薛四大家族的兴衰为背景,以富贵公子贾宝玉为视角,以贾宝玉与林黛玉、薛宝钗的爱情婚姻悲剧为主线,描绘了一批举止见识出于须眉之上的闺阁佳人的人生百态,展现了真正的人性美和悲剧美"
    }
    

    doc修改方式

    #修改文档,使用doc 方式
    POST /book/novel/1/_update
    {
      "doc":{
          #指定需要修改的field和对应的值
        "count":566666
      }
    }
    

    3、删除文档

    #根据id删除文档
    DELETE /book/novel/3mEnk3MBaSKoGN4T2olw 
    

    相关文章

      网友评论

          本文标题:ElasticSearch的基本操作

          本文链接:https://www.haomeiwen.com/subject/gqgxdktx.html