一、创建索引

指定字段的类型创建索引


类似于建库(建立索引和字段对应类型),也可看做规则的建立


PUT /索引名称/类型名称/1
{
   数据
}

es script多字段更新 es字段长度限制_java

 字段的数据类型:


(1)字符串类型


text、keyword


区别


- text:支持分词,全文检索,支持模糊、精确查询,不支持聚合,排序



操作;text类型的最大支持的字符长度无限制,适合大字段存储;



- keyword:不进行分词,直接索引、支持模糊、支持精确匹配,支持



聚合、排序操作。keyword类型的最大支持的长度为——32766个UTF-8



类型的字符,可以通过设置ignore_above指定自持字符长度,超过给



定长度后的数据将不被索引,无法通过term精确匹配检索返回结果。




(2)数值型



long、Integer、short、byte、double、flfloat、half flfloat



scaled flfloat




(3)日期类型



date




(4)te布尔类型



boolean




(5)二进制类型



binary




等等



二、删除索引

DELETE /索引名

三、查询全部索引

GET /_cat/indices?v

四、查询索引结构

GET /索引名



获取默认类型



GET /索引名



_doc 默认类型(default type),type 在未来的版本中会逐渐弃用,



因此产生一个默认类型进行代替



        如果自己的文档字段没有被指定,那么ElasticSearch就会给我们默认



配置字段类型




五、添加文档记录

1.指定id添加

#指定id
PUT /gsh1/_doc/1
{
  "name":"张三",
  "age":25
}

2.不指定id添加

会随机生成一个id

#不指定id
POST /gsh1/_doc
{
  "name":"李四",
  "age":23
}

六、查询文档(根据id查询)

查询提交方式必须为GET

GET /索引名称/类型名称/id值

七、删除文档

提交方式DELETE提交方式

根据不同的操作具有不同的提交方式restful风格

GET 查询
PUT 修改
POST 添加操作
DELETE 删除操作

八、修改文档

两种方法

1.修改所有的列(使用put覆盖原来的值):

版本+1(_version)

        这种修改必须要求指定所有列,如果只指定部分列,则原来其他列消失。

PUT /索引名/类型名/id{

        修改的数据

}

2.只修改部分列(使用post的update)



version 不会改变



需要注意 doc



不会丢失字段



#修改部分列
POST /gsh1/_doc/1/_update
{
  "doc":{
    "name":"周杰伦",
    "age":18
  }
}




九、根据其他条件查询(复杂查询)



①查询匹配



match :匹配(会使用分词器解析(先分析文档,然后进行查询))



_source :过滤字段



sort :排序



form 、 size 分页



②多条件查询( bool



must 相当于 and



should 相当于 or



must_not 相当于 not (... and ...)



filter 过滤



1.查询所有文档

相当于sql语句中的select * from 表名

GET /索引名/类型名/_search

#查询全部文档
GET /gsh1/_doc/_search

2.根据条件查询

相当于sql中的select * from 表名 where 列名=值

GET /索引名称/类型名称/_search?q=字段名:值

#根据条件查询
GET /gsh1/_doc/_search?q=age:23

3.将查询的格式转为JSON格式

#将查询的条件封装成json格式
GET /gsh1/_doc/_search
{
  "query":{
    "match":{
      "age":26
    }
  }
}

4.只查询出部分列(过滤查询)

#只查询部分列
GET /gsh1/_doc/_search
{
  "query":{
    "match":{
      "age":25
    }
  },
  "_source":["age"]
}

5.分页查询

相当于sql语句中的select * from 表名 where limit 0,5

from:从第几条记录开始查询

size:每页显示的记录数

#分页查询
GET /gsh1/_doc/_search
{
  "query":{
    "match":{
      "age":25
    }
  },
  "_source":["name","age"],
  "from":1,
  "size":1
}

6.范围查找(range)

gt:大于

lt:小于

#range范围查找
GET /user/_search
{
  "query": {
    "range": {
      "age": {
        "gt": 3
        , "lt": 20
      }
    }
  }
}

7.精准匹配(term)

#term精准匹配
GET /user/_search
{
  "query": {
    "term": {
      "name": {
        "value": "马"
      }
    }
  }
}

8.排序(sort)

order:排序规则

desc:降序

asc:升序

#排序
GET /user/_search
{
  "sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ]
}

9.must查询

must相当于and

#must查询相当于and
GET /user/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "马"
          }
        },
        {
          "match": {
            "age": "18"
          }
        }
      ]
    }
  }
}

10.should查询

should相当于or

#should查询相当于or
GET /user/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match":{
              "name":"刘"
            }
        },
        {
          "match":{
              "name":"刘"
            }
        }
       
      ]
    }
  }
}

11.取反must_not

must_not相当于not

#取反must_not
GET /user/_search
{
  "query": {
    "bool": {
      "must_not": [
        {
          "match": {
            "name": "马"
          }
        }
      ]
    }
  }
}

12.高量查询

#高亮查询
GET /user/_search
{
  "query": {
    "match": {
      "name": "马"
    }
  },
  "highlight": {
    "pre_tags": "<font color='red'>",
    "post_tags": "</font>"
    , "fields": {
      "name": {}
    }
    
  }
}