ElasticSearch_(4)文档介绍

新增文档 PUT

指定id 新增数据 _doc

curl -X PUT "localhost:9200/nba/_doc/1" -H 'Content-Type:application/json' -d '
{
	"name":"哈登",
	"team_name":"火箭",
	"position":"得分后卫",
	"play_year":"10",
	"jerse_no":"13"
}
'

shell 中需如下填写

curl -X PUT "localhost:9200/nba/_doc/1" -H 'Content-Type:application/json' -d '{"name":"哈登","team_name":"火箭","position":"得分后卫","play_year":"10","jerse_no":"13"}'

返回一个json

{
	"_index":"nba",
	"_type":"_doc",
	"_id":"1",
	"_version":1,
	"result":"created",
	"_shards"{
		"total":2,
		"successful":1,
		"failed":0
	},
	"_seq_no":0,
	"_primary_term":3
}

不指定id 自动新增数据 POST

curl -X POST "localhost:9200/nba/_doc" -H 'Content-Type:application/json' -d '
{
	"name":"库里",
	"team_name":"勇士",
	"position":"组织后卫",
	"play_year":"10",
	"jerse_no":"30"
}
'

在这里插入图片描述

自动创建索引 PUT

查看 auto_create_index 开关状态

curl -X GET "localhost:9200/_cluster/settings"

返回一个json

{
    "persistent": {},
    "transient": {}
}

当索引不存在并且auto_create_index为True的时候,新增文档时会自动创建索引

修改 auto_create_index 状态

curl -X PUT "localhost:9200/_cluster/settings" -H 'Content-Type:application/json' -d '
{
	"persistent":{
		"action.auto_create_index":"false"
	}
}
'

返回一个json

{
    "acknowledged": true,
    "persistent": {
        "action": {
            "auto_create_index": "false"
        }
    },
    "transient": {}
}

指定操作类型 ?op_type=create

新增文档时防止误操,把已有的文档更新掉,可以指定操作类型
要新增文档,重复与已有id重复,不指定操作类型时,会导致数据更新,未达到目标要求
在这里插入图片描述
指定操作类型,当输入重复的id号新增数据,会提示报错

curl -X PUT "localhost:9200/nba/_doc/1?op_type=create" -H 'Content-Type:application/json' -d '
{
	"name":"大胡子",
	"team_name":"火箭",
	"position":"得分后卫",
	"play_year":"10",
	"jerse_no":"13"
}
'

在这里插入图片描述

查看文档

指定id 查看文档 GET

curl -X GET "localhost:9200/nba/_doc/1"

在这里插入图片描述

查看多个文档 POST

_mget 几种写法查看多个文档

curl -X POST "localhost:9200/_mget" -H 'Content-Type:application/json' -d '
{
	"docs":[
		{
			"_index":"nba",
			"_type":"_doc",
			"_id":"1"
		},
		{
			"_index":"nba",
			"_type":"_doc",
			"_id":"2"
		}
	]
}
'
  1. 先指定索引
curl -X POST "localhost:9200/nba/_mget" -H 'Content-Type:application/json' -d '
{
	"docs":[
		{
			"_type":"_doc",
			"_id":"1"
		},
		{
			"_type":"_doc",
			"_id":"2"
		}
	]
}
'
  1. 指定索引和文档
curl -X POST "localhost:9200/nba/_doc/_mget" -H 'Content-Type:application/json' -d '
{
	"docs":[
		{
			"_id":"1"
		},
		{
			"_id":"2"
		}
	]
}
'
  1. 指定了索引和文档,传递了一个id数组
curl -X POST "localhost:9200/nba/_doc/_mget" -H 'Content-Type:application/json' -d '
{
	"ids":["1","2"]
}
'

在这里插入图片描述

修改文档 POST

_update

根据提供的文档片段更新数据

curl -X POST "localhost:9200/nba/_update/1" -H 'Content-Type:application/json' -d '
{
	"doc":{
		"name":"大胡子",
		"team_name":"火箭",
		"position":"得分后卫",
		"play_year":"20",
		"jerse_no":"13"
	}
}
'

_source字段,增加一个字段

script 表示脚本
ctx 上下文
\ json中不能有两个双引号,需使用反斜线

curl -X POST "localhost:9200/nba/_update/1" -H 'Content-Type:application/json' -d '
{
	"script":"ctx._source.age = 18"
}
'

_source字段,删除一个字段

curl -X POST "localhost:9200/nba/_update/1" -H 'Content-Type:application/json' -d '
{
	"script":"ctx._source.remove(\"age\")"
}
'

根据参数值,更新指定文档的字段内容

curl -X POST "localhost:9200/nba/_update/1" -H 'Content-Type:application/json' -d '
{
	"script":{
		"source":"ctx._source.age += params.age",
		"params":{
			"age":4
		}
	}
}
'

upsert
当指定的文档不存在时,upsert参数包含的内容将会被插入到索引中,作为一个新文档;
如果指定的文档存在,ES引擎将会执行指定的更新逻辑

curl -X POST "localhost:9200/nba/_update/3" -H 'Content-Type:application/json' -d '
{
	"script":{
		"source":"ctx._source.allstar += params.allstar",
		"params":{
			"allstar":4
		}
	},
	"upsert":{
		"allstar":1
	}
}
'

删除文档

根据指定id 删除文档

curl -X DELETE "localhost:9200/nba/_doc/3" 

在这里插入图片描述

以下是一个使用elasticsearch_dsl的示例代码: ```python # 引入必要的包 from elasticsearch_dsl import connections, Search from elasticsearch import Elasticsearch # 连接到elasticsearch es = connections.create_connection(hosts=["127.0.0.1:9200"], timeout=20) # 查询操作 search = Search(using=es, index="account_info") response = search.query("match", firstname="John").execute() for hit in response: print(hit.firstname, hit.lastname) # 更新文档 doc = search.get(id="1") doc.balance += 100 doc.save() # 删除文档 search.delete(id="2") # 关闭连接 es.close() ``` 以上示例代码展示了elasticsearch_dsl的基本用法。首先我们连接到elasticsearch实例,然后可以执行查询、更新和删除操作。在查询操作中,我们使用`Search`对象来构建查询条件,并执行`execute()`方法获取查询结果。在更新操作中,我们通过获取文档对象并修改其属性值,然后调用`save()`方法保存修改。在删除操作中,我们使用`delete()`方法指定要删除的文档id。最后,我们关闭连接。 请注意,以上示例中的索引名为"account_info",如果你使用的是不同的索引,请将其替换为你的索引名。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [python中elasticsearch_dsl模块用法详解](https://blog.csdn.net/m0_72557783/article/details/126957624)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值