相关文章推荐
独立的松鼠  ·  android gradle ...·  1 月前    · 
气势凌人的大葱  ·  在Windows ...·  1 年前    · 

程序员小强总结的 ElasticSearch专题超全总结篇 在这里: 传送门
结合官网资料,做了更详细的实际使用总结。
从单机版安装到集群高可用生产环境搭建、基本概念(索引,分片,节点,倒排索引…)、DSL语法实践、分词器(内置+中文)、SpringBoot整合实战、仿京东商品搜索实战实现。

1.新增文档

语法:公式

POST /索引库名/_doc(/手动添加的id)
    "key":"value"

这里是有 post或者put都可以
区别在于

  • put文档必须要指定文档_id;post可指定,可不指定,不指定则会随机生成一个_id

关于映射Mapping

  • 若没有提前设定索引中字段类型而直接添加文档,es会对字段数据给自动数据类型,新字段会永久补充到mapping。
  • 若添加的数据字段数量大于提前设定索引中字段数量,可成功,按情况1处理。
  • 若添加的数据字段数量小于提前设定索引中字段数量,可成功。

1.1指定文档ID

指定文档ID插入:手动指定ID
示例1: POST指定ID

POST /my_index1/_doc/1001
  "name":"李四",
  "age":23,
  "phone":"13233333332"

示例2: PUT指定ID(注:put必须指定ID)

PUT /my_index1/_doc/1002
  "name":"王五",
  "age":23,
  "phone":"13233333333"

1.2自动产生文档ID

自动产生文档ID插入:不是MySQL那样的AutoIncrement,而是类似MongoDB那样的自动生成ID

POST /my_index1/_doc/
  "name":"张三",
  "age":22,
  "phone":"13233333331"

2.查询文档

查询某索引下的文档

2.1查询所有文档

GET  /my_index1/_search

2.2根据ID查询指定文档

GET  /index_name/_doc/1

3.修改文档

3.1更新全部

注:全修改,请求方式PUT和POST都可以,全部字段均会被修改更新,可以新增字段,当ID未匹配上时,执行新增。

POST /my_index1/_doc/1002
  "name":"王五",
  "age":23,
  "phone":"13233333333",
  "desc":"我是新增的描述"

3.2部分更新

注:部分修改,请求方式 POST,只修改部分字段数据,当ID未匹配上时,执行新增。

  • 需要doc包裹
  • 不支持-不存在则创建
  • 不支持PUT请求方式
POST /my_index1/_update/10021/
  "doc": {
    "name": "王五",
    "age": 23,
    "phone": "13233333333",
    "desc": "我是新增的描述3"

3.3并发更新

Es使用版本version来管理文档,在更新的时候可以加上版本来控制并发。
官方文档
在这里插入图片描述

  • _seq_no,严格递增的顺序号,每个文档一个,Shard级别严格递增,保证后写入的Doc的_seq_no大于先写入的Doc的_seq_no。
  • primary_term_seq_no一样是一个整数,每当Primary Shard发生重新分配时,比如重启,Primary选举等,_primary_term会递增1
#先查询一下
GET /my_index1/_doc/1001
#带着查询中返回的 seq_no 和primary_term 参数更新
POST /my_index1/_doc/1001?if_seq_no=11&if_primary_term=1
  "doc":{
   "amount":333

4.删除文档

根据id删除指定文档

DELETE /my_index1/_doc/10021

5.批量操作

批量操作是指,一批命令同时执行(减少IO),这些命令不一定是同种类型。

5.1批量查找

5.1.1多ID查询

GET /my_index3/_search
  "query": {
    "ids": {
      "values":[ 1001, 1002, 1003 ]

5.1.2mget单索引

# 批量查询my_index3索引数据
POST /my_index3/_mget
  "ids": [
    "1001",
    "1002",
    "1003"

5.1.3mget跨索引

# 同时查询my_index1与my_index3两个所以下的数据
GET /_mget
  "docs": [
      "_index": "my_index1",
      "_id": "1001"
      "_index": "my_index3",
      "_id": "1002"

5.2批量新增

POST _bulk
{ "create" : { "_index" : "my_index3", "_id" : "1001" } }
{"name":"张三","age":20,"phone":"13233333331","desc":"我是张三的描述"}
{ "create" : { "_index" : "my_index3", "_id" : "1002" } }
{"name":"李四","age":21,"phone":"13233333332","desc":"我是李四的描述"}
  • 命令是只有文档不存在-才会插入。
  • index 会判断若存在就更新,不存在就新增;

5.3批量更新

POST _bulk
{"update":{"_index":"my_index3","_id":"1001"}}
{"doc":{"age":20,"desc":"我是张三修改的描述"}}
{"update":{"_index":"my_index3","_id":"1002"}}
{"doc":{"age":20,"desc":"我是李四修改的描述"}}
  • 命令下一行需要紧跟着data数据

5.4批量增删改同时操作

使用_bulk命令可以进行文档的批量增删改

POST _bulk
{ "create" : { "_index" : "my_index3", "_id" : "1003" } }
{"name":"王五","age":21,"phone":"13233333333","desc":"我是王五的描述"}
{ "update" : { "_index" : "my_index3", "_id" : "1001" } }
{ "doc" : {"age" : 19,"desc":"我是张三第二次修改的描述"} }
{ "delete" : { "_index" : "my_index3", "_id" : "1002" } }
  • 新增ID为1003的文档
  • 更新ID为1001的文档
  • 删除ID为1002的文档

5.5批量删除

POST _bulk
{ "delete" : { "_index" : "my_index3", "_id" : "1001" } }
{ "delete" : { "_index" : "my_index3", "_id" : "1003" } }

关注程序员小强公众号更多编程趣事,知识心得与您分享
👏关注“程序员小强”发送关键字“elasticSearch”到公众号获取相关篇

1.新增文档语法:公式POST /索引库名/_doc(/手动添加的id){ "key":"value"}这里是有 post或者put都可以区别在于put文档必须要指定文档_id;post可指定,可不指定,不指定则会随机生成一个_id关于映射Mapping若没有提前设定索引中字段类型而直接添加文档,es会对字段数据给自动数据类型,新字段会永久补充到mapping。若添加的数据字段数量大于提前设定索引中字段数量,可成功,按情况1处理。若添加的数据字段数量小于提前设定索引中字
大家好,我是村长 今天总结一下通过Python 更新 Elasticsearch 数据的几个方法 Elasticsearch 是一个实时的分布式搜索分析引擎,它能让你以前所未有的速度和规模,去探索你的数据。 它被用作全文检索、结构化搜索、分析以及这三个功能的组合 在 Elasticsearch 中,通过指定文档的 _id, 使用 Elasticsearch 自带的 index api 可以实现插入一条 document , 如果该 _id 已存在,将直接更新该 document 因此,通过i
ElasticSearch7.0 关联查询之父子文档 ES7中取消了type这一层级(相当于关系数据库中的table,mongo中的collection),所有文档平铺存放在同一个index中,对于一对多的关联关系,ES7中有两种方式: 父子文档,所有文档都是平级的,通过特殊的字段类型join来表示层级关系 嵌套文档,类似于json中的嵌套数组,需要申明字段类型为nested 本篇针对父子文档这一类型 官方文档地址:https://www.elastic.co/guide/en/elasticsearc
文章目录介绍(一)检索(二)主要概念融合安装检索方式学习(一)索引员工文档(二)检索文档(三)轻量搜索(四)使用查询表达式搜索(五)更复杂的查询(六)全文搜索(七)高亮搜索(八)检索总结SpringBoot整合ES(一)简单介绍和自动配置分析(二)Jest客户端整合使用(三)SpringData ES整合使用(1)官方文档参考(2)自动配置类介绍(3)ElasticsearchRepository方式操作 (一)检索 我们的应用经常需要添加检索功能,开源的 ElasticSearch 是目前全文搜索引
一.旧版elasticsearch-dsl 很多同学在python搜索引擎视频中关于看到的第十章elasticsearch使用中使用python创建mapping老师使用的以下代码,这些代码对于elasticsearch-dsl的引用已经失效,会报异常错误 from datetime import datetime from elasticsearch_dsl import Document, D...