ES的基本操作

Elasticsearch: 权威指南 | Elastic

RESTful 请求格式

  • GET 获取资源 /getUser/1
  • DELETE 删除资源 /deleteUser/1
  • PUT 修改资源 /updateUser/1
  • POST 创建资源 /createUser
  • HEAD 与GET类似,但不返回message body内容,仅获取资源的部分信息。
  • OPTIONS 用于URL验证,验证接口服务是否正常。
  • PATCH 用于创建更新资源,与PUT类似。

字段格式

es常用字段类型 - 简书 (jianshu.com)

字符串:textkeyword

text:
按规则分词,至少分词1个词,做全文检索(不要存放空值,会导致性能浪费)
默认分词器standard
应用场景:用于分词检索场景
keyword:
不分词,仅仅一个词,查询效率高,早期没有这个类型,用String代替,通过属性设置
应用场景:固定文本,无需全文检索,如姓名,省,商品类目。

整数:Long(64bit)、Integer(32bit、21亿)、short(16bit)、Byte(8bit)
浮点:Double 、Float 、Half Float 、Scaled float(缩放浮点类型,解决浮点类型计算精度的错误问题)

日期类型 date

复合字段类型

object:json对象形式,可嵌套多种子对象
Mapping映射(类似于关系型数据库中的schema,用来描述表的结构)
_source: enable:true false
dynamic : true false strict
range:(BKD树算法)
"gte"大于,"lte"小于,整型范围、浮点范围、日期范围、ip范围
field_detect:字段类型自动检测,默认开启

特殊类型

关联字段类型:join父子类型
定义:数据存在父子关系,一条数据可以有多条子数据,一条子数据仅有一条父数据

alias:别名

flattened:平铺(对象object类型的一种改进,对象object类型可以动态扩展多个字段,fattend就当成一个字段,且保证原来的json格式),使用场景:日志领域
constant_keyword:固定值,不可以被修改,应用场景:数据的版本号等
Multi_fileds:多字段类型,可设计为多种类型,

高级数据字段类型

geo_point:地理位置。
geo_shape:地理图形(应用:在地图上画一个区域,在区域内进行检索)
shape:多边图形应用(2D平面类型检索,支持多边形)
特殊行业字段:网络地址,直方图类型,词项统计,自动完成类型。

DDL操作

数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。

建表

建表命令_Sunny-CSDN博客

请求:put URL:192.168.2.11:9200/IndexName/tyepName

索引名称-类型名称-id

put

{
    "settings":{
        "number_of_shards":5,
        "number_of_replicas":1
    },
    "mappings":{
        "TypeName":{
            "dynamic":"strict",
            "properties":{
                
            }
        }
    }
}

属性说明:

properties表示表的字段

  1. type字段类型,所有得字段都设置成了string,是因为在查询和编码过程中,有些类型不能很好的被转换,例如boolean
  2. store是否存储,属性有yes或者no,无论那种属性都会被存储,但如果设置成no,在查询的时候是无法用此属性作为查询项的,基于拓展和业务方便维护,建议使用yes
  3. index是否索引,属性有not_analyzed(分词不分析)、analyzed(分词分析)、no(不分析不分词)
  4. analyzer使用哪种分词器,在安装es的时候会自己安装分词器,例如IK分词器,在此指定分词的时候使用的是哪种分词器
  5. search_analyzer使用哪种分词器,但不是在入库的时候,而是在做查询的时候使用哪种分词器
  6. ignore_above对超过 ignore_above 的字符串,analyzer 不会进行处理;所以就不会索引起来。导致的结果就是最终搜索引擎搜索不到了。这个选项主要对 not_analyzed 字段有用,这些字段通常用来进行过滤、聚合和排序。而且这些字段都是结构化的,所以一般不会允许在这些字段中索引过长的项。
  7. format日期格式要求,例如设置为"yyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"

dynamic表示是否使用动态映射,属性有

  1. true默认值,动态添加字段
  2. false忽略新字段
  3. strict如果碰到陌生字段,抛出异常

settings表示设置

​ num_of_shards设置分片数量,默认为5
​ num_of_replicas设置副本数量,默认为1

删表

请求:delete URL:192.168.2.11:9200/IndexName

改表

elasticsearch 并不支持修改mapping映射字段,无法直接修改。

elasticsearch 修改mapping映射字段

将原有数据迁移到新表数据。

POST _reindex
{
  "source": {
    "index": "metricbeat-*"(老的索引名)
  },
  "dest": {
    "index": "metricbeat"(新的索引名)
  }
}

DML操作

数据操纵语句,用于添加、删除、更新和查询数据库记录。

一下都省略了访问地址 端口号。localhost:9200

增加

put

PUT  /megacorp/employee/1
{
    "first_name" : "John",
    "last_name" :  "Smith",
    "age" :        25,
    "about" :      "I love to go rock climbing",
    "interests": [ "sports", "music" ]
}

删除

delete

DELETE /megacorp/employee/1

修改

put

PUT  /megacorp/employee/1
{
    "first_name" : "John",
    "last_name" :  "Smith",
    "age" :        25,
    "about" :      "I love to go rock climbing",
    "interests": [ "sports", "music" ]
}

查询

GET /megacorp/employee/_search
{
    "query": {
        "bool": {
            "must": [
                {
                    "match_all": {}
                }
            ],
            "must_not": [],
            "should": []
        }
    },
    "from": 0,
    "size": 10,
    "sort": [],
    "aggs": {}
}
  • query: 判断条件。
    • must
    • must_not
    • should 应该
  • from:起始数据。
  • size:获取大小。
  • sort:排序。
  • aggs:聚合。
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐