es基本操作

143 阅读3分钟

相关属性介绍

image.png

索引操作

# 创建索引库

put /索引库名称
{
    "settings":{
        "属性名":属性值"
    }
}

settings:就是索引库设置,其中可以定义索引库的各种属性 比如分片数 副本数等

# 判断索引库是否存在
head /索引名称

# 查看索引库
查看单个
get /索引库名称

批量查看
get/索引1,索引2,索引3

查看所有
get _all  方式1
get /_cat/indices?v  方式2


# 打开索引库
post /索引名称/_open

# 关闭索引库
post /索引名称/_close

# 删除索引库
delete /索引1,索引2,

映射操作

# 创建索引库

put /索引库名称/_mapping
{
    "properties":{
        "字段名":{
            "type":"类型", # text、long、short、date、interger、object等
            "index":true, # 是否索引,默认true
            "store":true, # 是否存储,默认true
            "analyzer":"分词器" # 指定分词器
            
        },“字段名2”:{...}
    }
}


# 一次性创建索引和映射
put /索引库名称
{
    "settings":{
        "索引库属性名":索引库属性值"
    }
    "mappings":{
        "properties":{
        "字段名":{
            "type":"类型", # text、long、short、date、interger、object等
            "index":true, # 是否索引,默认true
            "store":true, # 是否存储,默认true
            "analyzer":"分词器" # 指定分词器
            
        },“字段名2”:{...}
    }
    }
}

# 查看映射关系
get /索引名称/_mapping

# 删除映射关系
post /索引名称/_mapping
{
    "properties":{
        "字段名":{
            "type":null
        }
    }
}

映射属性详解

1)type String类型,又分两种:

text:可分词,不可参与聚合

keyword:不可分词,数据会作为完整字段进行匹配,可以参与聚合

Numerical:数值类型,分两类

基本数据类型:long、interger、short、byte、double、flfloat、half_flfloat

浮点数的高精度类型:scaled_flfloat

需要指定一个精度因子,比如10或100。elasticsearch会把真实值乘以这个因子后存

Date:日期类型

elasticsearch可以对日期格式化为字符串存储,但是建议我们存储为毫秒值,存储为long,节省

空间。

Array:数组类型

进行匹配时,任意一个元素满足,都认为满足

排序时,如果升序则用数组中的最小值来排序,如果降序则用数组中的最大值来排序

Object:对象

{
    name:"",
    age:11,
    aa:{bb:"",cc:"'}
}

2)index

index影响字段的索引情况。

true:字段会被索引,则可以用来进行搜索。默认值就是true

false:字段不会被索引,不能用来搜索

index的默认值就是true,也就是说你不进行任何配置,所有字段都会被索引。

但是有些字段是我们不希望被索引的,比如企业的logo图片地址,就需要手动设置index为false。

3)store

是否将数据进行独立存储。

原始的文本会存储在 _source 里面,默认情况下其他提取出来的字段都不是独立存储的,是从 _source 里面提取出来的。当然你也可以独立的存储某个字段,只要设置store:true即可,获取独立存 储的字段要比从_source中解析快得多,但是也会占用更多的空间,所以要根据实际业务需求来设置, 默认为false。

4)analyzer:指定分词器

一般我们处理中文会选择ik分词器 ik_max_word ik_smart

文档增删改查及局部更新

# 新增文档
post /索引名称/_doc/{id}

post /es_demo1/_doc/1
{
    "name":"",
    "age":
}

# 查看文档
get /索引名称/_doc/{id}

# 查看所有文档
post /索引名称/_search
{
    "query":{
        "match_all":{
        }
    }
}

# 指定返回结果
get /索引名称/_doc/{id}_source=name,age

# 全部更新
put /索引名称/_doc/{id}
{
    全部字段值
}
id不存在时就是新增,result为created


# 局部更新
post /索引名称/_update/{id}
{
    "doc":{
        "filed":"value"
    }
}

# 删除文档
delete /索引名称/_doc/{id}

image.png