当前位置:   article > 正文

elasticsearch增删改查

elasticsearch增删改查

一、数据类型

1、字符串类型

(1)text

(2)keyword

2、数值类型

(1)long、integer、short、byte、float、double 

3、日期类型

(1)date

4、布尔类型

(1)boolean

5、二进制

(1)binary

注:
如果文档字段没有指定,es会默认配置字段类型。

二、PUT - 创建索引库且插入数据:

(1)使用PUT可以创建索引库

PUT /索引库的名称/类型名称(高版本已废弃,一般默认会写_doc)/ 文档id

{JSON请求体} // 相当于往索引库中添加数据

  1. PUT /lxc/type01/1
  2. {
  3. "name":"lxc",
  4. "age": 28,
  5. "height": "175"
  6. }

在elasticsearch-head中查看:

(2)通常会先创建索引库,并指定字段类型(创建规则)

下边创建了一个user索引库,并指定了索引库字段类型(name/age/createTime)

  1. PUT /user
  2. {
  3. "mappings": {
  4. "properties": {
  5. "name": {
  6. "type": "text"
  7. },
  8. "age": {
  9. "type": "long"
  10. },
  11. "createTime": {
  12. "type": "date"
  13. }
  14. }
  15. }
  16. }

在kibana中执行,即可创建: 

然后,往user索引库中添加数据:

三、GET - 获取索引库数据信息:

(1)GET /索引库名称:获取索引库信息(相当于列出一个表结构信息)

(2)GET /索引库名称/_doc/文档id:获取索引库对应文档id的数据信息(相当于根据id查询某一条数据)

(3)GET _cat/indices?v : 获取当前es信息

GET _cat/health : 获取当前es健康值状态

(4)高级查询

1、查询user索引库,条件:name="张三",过滤字段:只保留name
  1. GET /user/_doc/_search
  2. {
  3.   "query": {
  4.     "match": {
  5.       "name" : "张三"
  6.     }
  7.   },
  8.   "_source": ["name"]
  9. }

2、多条件查询 bool

must:相当于 name = "张三" and name = "李四"

  1. GET /user/_doc/_search
  2. {
  3. "query": {
  4. "bool": {
  5. "must": [
  6. {"match": {"name": "张三"}},
  7. {"match": {"name": "李四"}}
  8. ]
  9. }
  10. }
  11. }

  should:相当于 name = "张三" or name = "李四" 

  1. GET /user/_doc/_search
  2. {
  3. "query": {
  4. "bool": {
  5. "should": [
  6. {"match": {"name": "张三"}},
  7. {"match": {"name": "李四"}}
  8. ]
  9. }
  10. }
  11. }

 must_not:相当于 name != "张三"  或者 name is not "张三" 

  1. GET /user/_doc/_search
  2. {
  3. "query": {
  4. "bool": {
  5. "must_not": [
  6. {"match": {"name": "张三"}}
  7. ]
  8. }
  9. }
  10. }

3、根据某i个字段排序(如果使用排序,此时分值字段 _score 会失效)
  1. GET /user/_doc/_search
  2. {
  3. "query": {
  4. "match": {
  5. "name" : "张三"
  6. }
  7. },
  8. "_source": ["name"],
  9. // 排序
  10. "sort": [
  11. {
  12. "age": {
  13. "order": "desc"
  14. }
  15. }
  16. ]
  17. }
4、分页
  1. GET /user/_doc/_search
  2. {
  3. "query": {
  4. "match": {
  5. "name" : "张三"
  6. }
  7. },
  8. "from": 0, // 从第几页开始
  9. "size": 1 // 一页展示条数
  10. }

(5)字段类型:text和keyword区别

text类型字段,会被分词器解析。

keyword类型的字段,不会被分词器解析(如果字段是keyword类型的相当于不能模糊匹配了,只能一个整体精确匹配) 。

四、POST  根据文档id新增

POST  /索引库/_doc/文档id


五、_update 根据文档id修改

POST  /索引库/_doc/文档id/_update(这种方式的修改较之前传统PUT方式修改优点:不会因为哪一个字段没有修改就会赋值null或者置空)

下边是没修改之前的user索引库,文档id为1的数据

执行修改:
注意版本号 "_version" 由3 变成4 了(下边只修改了索引库中name字段值,其他不会被覆盖修改)

六、DELETE 删除

DELETE  /索引库 :删除索引库

DELATE /索引库/_doc/1   删除索引库中文档id为1的数据

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/80315
推荐阅读
相关标签
  

闽ICP备14008679号