文档的基本操作

一、添加

添加文档数据

POST /my_doc/_doc/1 -> {索引名}/_doc/{索引ID}(是指索引在es中的id,而不是这条记录的id,比如记录的id从数据库来是1001,并不是这个。如果不写,则自动生成一个字符串。建议和数据id保持一致> ){"id": 1001,"name": "imooc-1","desc": "imooc is very good, 慕课网非常牛!","create_date": "2019-12-24"
}{"id": 1002,"name": "imooc-2","desc": "imooc is fashion, 慕课网非常时尚!","create_date": "2019-12-25"
}{"id": 1003,"name": "imooc-3","desc": "imooc is niubility, 慕课网很好很强大!","create_date": "2019-12-26"
}{"id": 1004,"name": "imooc-4","desc": "imooc is good~!","create_date": "2019-12-27"
}{"id": 1005,"name": "imooc-5","desc": "慕课网 is 强大!","create_date": "2019-12-28"
}{"id": 1006,"name": "imooc-6","desc": "慕课是一个强大网站!","create_date": "2019-12-29"
}{"id": 1007,"name": "imooc-7","desc": "慕课网是很牛网站!","create_date": "2019-12-30"
}{"id": 1008,"name": "imooc-8","desc": "慕课网是很好看!","create_date": "2019-12-31"
}{"id": 1009,"name": "imooc-9","desc": "在慕课网学习很久!","create_date": "2020-01-01"
}
  • 注:如果索引没有手动建立mappings,那么当插入文档数据的时候,会根据文档类型自动设置属性类型。这个就是es的动态映射,帮我们在index索引库中去建立数据结构的相关配置信息。
  • “fields”: {“type”: “keyword”} 对一个字段设置多种索引模式,使用text类型做全文检索,也可使用keyword类型做聚合和排序
  • “ignore_above” : 256 设置字段索引和存储的长度最大值,超过则被忽略

批量添加

POST  /imooc-test/_doc/_bulk
{"index":{}}
{"id":1003,"name":"imooc-3","desc":"imoocisniubility,慕课网很好很强大!","create_date":"2019-12-26"}
{"index":{}}
{"id":1004,"name":"imooc-4","desc":"imoocisgood~!","create_date":"2019-12-27"}
{"index":{}}
{"id":1005,"name":"imooc-5","desc":"慕课网is强大!","create_date":"2019-12-28"}
{"index":{}}
{"id":1006,"name":"imooc-6","desc":"慕课是一个强大网站!","create_date":"2019-12-29"}
{"index":{}}
{"id":1007,"name":"imooc-7","desc":"慕课网是很牛网站!","create_date":"2019-12-30"}
{"index":{}}
{"id":1008,"name":"imooc-8","desc":"慕课网是很好看!","create_date":"2019-12-31"}
{"index":{}}
{"id":1009,"name":"imooc-9","desc":"在慕课网学习很久!","create_date":"2020-01-01"}

二、修改删除

删除文档

DELETE /my_doc/_doc/1
  • 注:文档删除不是立即删除,文档还是保存在磁盘上,索引增长越来越多,才会把那些曾经标识过删除的,进行清理,从磁盘上移出去。

修改文档

局部

POST /my_doc/_doc/1/_update
{"doc": {"name": "123"}
}

全量替换

PUT /my_doc/_doc/1
{"id": 1001,"name": "imooc-1","desc": "imooc is very good, 慕课网非常牛!","create_date": "2019-12-24"
}
  • 注:每次修改后version都会增加

三、查询

查询文档

查询

GET /index_demo/_doc/1
GET /index_demo/_doc/_search

查询结果

{"_index": "my_doc","_type": "_doc","_id": "2","_score": 1.0,"_version": 9,"_source": {"id": 1002,"name": "imooc-2","desc": "imooc is fashion","create_date": "2019-12-25"}
}

元数据

  • _index:文档数据所属那个索引,理解为数据库的某张表即可。
  • _id:文档数据的唯一标识,类似数据库中某张表的主键。可以自动生成或者手动指定。
  • _score:查询相关度,是否契合用户匹配,分数越高用户的搜索体验越高。
  • _version:版本号。
  • _source:文档数据,json格式。

定制结果集

GET /index_demo/_doc/1?_source=id,name
GET /index_demo/_doc/_search?_source=id,name

判断文档是否存在

HEAD /index_demo/_doc/1

文档乐观锁控制 if_seq_no与if_primary_term

插入新数据

POST /my_doc/_doc
{"id": 1010,"name": "imooc-1010","desc": "imoocimooc!","create_date": "2019-12-24"
}
# 此时 _version 为 1

修改数据

POST    /my_doc/_doc/{_id}/_update
{"doc": {"name": "慕课"}
}
# 此时 _version 为 2

模拟两个客户端操作同一个文档数据,_version都携带为一样的数值

# 操作1
POST    /my_doc/_doc/{_id}/_update?if_seq_no={数值}&if_primary_term={数值}
{"doc": {"name": "慕课1"}
}# 操作2
POST    /my_doc/_doc/{_id}/_update?if_seq_no={数值}&if_primary_term={数值}
{"doc": {"name": "慕课2"}
}

版本元数据

  • _seq_no:文档版本号,作用同_version(相当于学生编号,每个班级的班主任为学生分配编号,效率要比学校教务处分配来的更加高效,管理起来更方便)
  • _seq_no:文档版本号,作用同_version(相当于学生编号,每个班级的班主任为学生分配编号,效率要比学校教务处分配来的更加高效,管理起来更方便)

分词与内置分词器

什么是分词

把文本转换为一个个的单词,分词称之为analysis。es默认只对英文语句做分词,中文不支持,每个中文字都会被拆分为独立的个体。

  • 英文分词:I study in
  • 中文分词:我在慕课网学习
POST /_analyze
{"analyzer": "standard","text": "text文本"
}
POST /my_doc/_analyze
{"analyzer": "standard","field": "name","text": "text文本"
}

es内置分词器

  • standard:默认分词,单词会被拆分,大小会转换为小写。
  • simple:按照非字母分词。大写转为小写。
  • whitespace:按照空格分词。忽略大小写。
  • stop:去除无意义单词,比如the/a/an/is
  • keyword:不做分词。把整个文本作为一个单独的关键词。

IK中文分词器

下载IK中文分词器

github:https://github.com/medcl/elasticsearch-analysis-ik/releases/

zip解压: unzip xxx.zip -d ik

POST /_analyze
{"analyzer": "ik_max_word","text": "上下班车流量很大"
}

自定义词库

1、 在{es}/plugins/ik/config下,创建:

vim custom.dic

2、 并且添加内容:

呵呵
骚年

3、配置自定义扩展词典

<entry key="ext_dict">custom.dic</entry>

4、重启

【Elasticsearch系列】文档的基本操作相关推荐

  1. 关于文档的基本操作---ElasticSearch

    关于文档的基本操作(重点) 基本操作 添加数据 PUT /psz/user/1 {"name": "psz","age": 22," ...

  2. java openoffice 打印_java调用openoffice将office系列文档转换为PDF的示例方法

    前导: 发过程中经常会使用java将office系列文档转换为PDF, 一般都使用微软提供的openoffice+jodconverter 实现转换文档. openoffice既有windows版本也 ...

  3. elasticsearch 路由文档到分片

    路由文档到分片 当你索引一个文档,它被存储在单独一个主分片上.Elasticsearch是如何知道文档属于哪个分片的呢?当你创建一个新文档,它是如何知道是应该存储在分片1还是分片2上的呢? 进程不能是 ...

  4. ElasticSearch创建文档

    ElasticSearch创建文档 创建文档有两种途径 直接在XcontentBuilder构建json数据,创建文档. // 描述json 数据/** {id:xxx, title:xxx, con ...

  5. ES关于文档的基本操作

    关于文档的基本操作 基本操作 添加数据 PUT /quanzhan/user/1 {"name": "xzM","age": 18,&quo ...

  6. 关闭word_Word教程第2讲:文档的基本操作(含视频)

    点击图片  1元抢购 Excel.Word.PPT全套课程 本讲目标: 关闭文档 掌握文档的创建 掌握保存文档的方法,以及加密保存的实现 掌握打开文档的方法,以及文档的打开方式 掌握插入文档的方法,了 ...

  7. 【elasticsearch】文档 CRUD 增删改查 以及 相关 参数

    1.概述 转载:https://mp.weixin.qq.com/s/aOZnZpAC4c_dYkVW8DfNPg 在Elasticsearch中,文档(document)是所有可搜索数据的最小单位. ...

  8. 分布式搜索elasticsearch 索引文档的增删改查 入门

    分布式搜索elasticsearch 索引文档的增删改查 入门 1.RESTful接口使用方法 为了方便直观我们使用Head插件提供的接口进行演示,实际上内部调用的RESTful接口. RESTful ...

  9. Python实现自动化办公(三):Python对PPT文档的基本操作(python-pptx)

    Python对PPT文档的基本操作 文章目录 Python对PPT文档的基本操作 一.pptx模块 1.官方文档 2.安装pptx模块 二.基本函数的使用方法 三.使用案例 1.修改ppt内容 2.写 ...

最新文章

  1. 阿里云 mysql主从_阿里云MySQL主从_Mater Slave_主备同步_MySQL主从_MySQL延迟-云栖社区-阿里云...
  2. 【itext学习之路】--1.创建一个简单的pdf文档
  3. flutter 生成文档_Flutter文件操作
  4. bzoj3527: [Zjoi2014]力 fft
  5. python读取文件乱码
  6. Spark-生产案例
  7. linux 制作分区镜像img文件
  8. 遍历JSON的三种方法
  9. 比方便面还方便~利用Python开发一个桌面小程序
  10. OceanBase-概述
  11. Typora怎么插入图片链接,并设置图片居中
  12. android app文件夹,android app文件目录结构
  13. 【论文阅读】Unifying Knowledge Graph Learning and Recommendation
  14. PS新手教程:轻松掌握四种扁平化设计风格
  15. Three.js显示物体的运动轨迹
  16. Python 83道经典练习题,含答案!
  17. python爬虫实践之爬取豆瓣高评分电影
  18. uIP无操作系统(裸机)移植
  19. [笔记][java 4 android] [028~034]接口、异常和I/O流
  20. 送给未来的自己10句话

热门文章

  1. ssh远程端口转发到本地_Linux SSH隧道或端口转发本地和远程端口的示例?
  2. 计算机应用电子表格题,计算机应用基础Ecel电子表格题目.doc
  3. 大数据聚类算法性能比较及实验报告
  4. WPF+WCF一步一步打造音频聊天室(一):概述
  5. 使用 Kube-capacity CLI 查看 Kubernetes 资源请求、限制和利用率
  6. html计算斐波那契数列,使用HTML5 Web Worker计算斐波那契数列
  7. GPS、谷歌、百度坐标系互相转换
  8. 伺服系统三环的控制频率
  9. Network Experiance - Cisco IP 电话 通过防火墙后无法注册
  10. julia fit 函数_Julia中的符号和绝对值函数