es基本操作

113 阅读1分钟

1、索引库操作

1.1 创建索引库

# 创建索引库
PUT /索引库名

PUT /zhang
{
  "mappings": {
    "properties": {
      "name":{
        "type": "text",
        "analyzer": "ik_max_word"
      },
      "address":{
        "type": "keyword",
        "index": "false"
      }
    }
  }
}

1.2 查看索引库

# 查看索引库
GET /索引库名

GET /zhang

1.3 修改索引库

索引库和mapping一旦创建无法修改,但是可以添加新的字段

PUT /索引库名/_mapping

PUT /zhang/_mapping
{
  "properties": {
    "age": {
      "type": "integer",
      "index": false
    }
  }
}

1.4 删除索引库

DELETE /索引库名 

DELETE /zhang

2、文档操作

2.1 创建文档

POST /索引库名/_doc/文档id

以上述索引库zhang为例:

POST /zhang/_doc/1
{
  "name":"张三",
  "age": 30,
  "address":"上海市"
}

2.2 查看文档

GET /索引库名/_doc/文档id

GET /zhang/_doc/1

2.3 删除文档

DELETE /索引库名/_doc/文档id

DELETE /zhang/_doc/1

2.4 修改文档

方式一: 全量修改,会删除旧文档,添加新文档

POST /zhang/_doc/1
{
  "name":"李四",
  "age": 29,
  "address":"上海市"
}

方式二: 增量修改,修改指定字段值

POST /索引库名/_update/文档id
{
    "doc": {
         "字段名": "新的值",
    }
}

POST /zhang/_doc/1
{
  "doc":{
    "name":"王五"
  }
}

3、总结

当我们向ES中插入文档时,如果文档中字段没有对应的mapping,ES会帮助我们字段设置mapping,规则如下:

Json类型Elasticsearch类型
字符串日期格式字符串:mapping为date类型
普通字符串:mapping为text类型,并添加keyword类型子字段
布尔值boolean
浮点数float
整数long
对象嵌套object,并添加properties
数组由数组中的第一个非空类型决定
空值忽略
  1. 插入文档时,es会检查文档中的字段是否有mapping,如果没有则按照默认mapping规则来创建索引。
  2. 如果默认mapping规则不符合你的需求,一定要自己设置字段mapping