ElasticSearch入门之es使用shell命令操作索引,curl操作索引 08

本文介绍如何使用Curl命令行工具与Elasticsearch进行交互,包括创建索引、插入、查询、更新和删除文档等操作。同时,解析了Curl请求中的常见参数,如HTTP方法、数据传输、请求头信息等,并详细解释了返回结果中的关键字段含义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

curl是利用URL语法在命令行方式下工作的开源文件传输工具,使用curl可以简单实现常见的get/post请求。简单的认为是可以在命令行下面访问url的一个工具。在centos的默认库里面是有curl工具的,如果没有请yum安装即可。
curl

-X 指定http的请求方法 有HEAD GET POST PUT DELETE
-d 指定要传输的数据
-H 指定http请求头信息

1. 使用XPUT创建索引,插入文档

1.1 创建索引

curl -XPUT http://node01:9200/blog01/?pretty
# 默认五个分片,两个副本。

1.2 插入文档

前面的命令使用 PUT 动词将一个文档添加到 /article(文档类型),并为该文档分配 ID 为1。URL 路径显示为index/doctype/ID(索引/文档类型/ID)。

curl -XPUT http://node01:9200/blog01/article/1?pretty -d  '{"id": "1", "title": "What is lucene"}'

报错:Content-Type header [application/x-www-form-urlencoded] is not supported
原因: 此原因时由于ES增加了安全机制, 进行严格的内容类型检查,严格检查内容类型也可以作为防止跨站点请求伪造攻击的一层保护。
解决:

curl -XPUT http://node01:9200/blog01/article/1?pretty -d  '{"id": "1", "title": "What is lucene"}' -H "Content-Type: application/json"

2. 根据索引查询文档

curl -XGET "http://node01:9200/blog01/article/1?pretty" -H "Content-Type: application/json"

3. 根据字段查询文档

curl -XGET "http://node01:9200/blog01/article/_search?q=title:'elasticsearch'&pretty" -H "Content-Type: application/json"

4. 更新文档

curl -XPUT http://node01:9200/blog01/article/1?pretty -d  '{"id": "1", "title": " What is elasticsearch"}' -H "Content-Type: application/json"

5. 删除文档

curl -XDELETE "http://node01:9200/blog01?pretty"

6. 返回值说明

6.1 Hits

  • 返回结果中最重要的部分是 hits ,它包含 total 字段来表示匹配到的文档总数,并且一个 hits 数组包含所查询结果的前十个文档
  • 在 hits 数组中每个结果包含文档的 _index 、 _type 、 _id ,加上 _source 字段。这意味着我们可以直接从返回的搜索结果中使用整个文档。这不像其他的搜索引擎,仅仅返回文档的ID,需要你单独去获取文档。
  • 每个结果还有一个 _score ,它衡量了文档与查询的匹配程度。默认情况下,首先返回最相关的文档结果,就是说,返回的文档是按照 _score 降序排列的。在这个例子中,我们没有指定任何查询,故所有的文档具有相同的相关性,因此对所有的结果而言 1 是中性的 _score 。
  • max_score 值是与查询所匹配文档的 _score 的最大值。

6.2 took

took 值告诉我们执行整个搜索请求耗费了多少毫秒

6.3 Shark

  • 创建时,影响的是两个分片, 这两个分片是指的2个副本
  • 查询时,影响五个分片(默认)
    _shards 部分 告诉我们在查询中参与分片的总数,以及这些分片成功了多少个失败了多少个。正常情况下我们不希望分片失败,但是分片失败是可能发生的。
    如果我们遭遇到一种灾难级别的故障,在这个故障中丢失了相同分片的原始数据和副本,那么对这个分片将没有可用副本来对搜索请求作出响应。假若这样,Elasticsearch 将报告这个分片是失败的,但是会继续返回剩余分片的结果。

6.4 timeout

timed_out 值告诉我们查询是否超时。默认情况下,搜索请求不会超时。 如果低响应时间比完成结果更重要,你可以指定 timeout 为 10 或者 10ms(10毫秒),或者 1s(1秒):

<think>好的,用户现在想了解Elasticsearch的常用curl命令示例。之前我已经提供过一些基础命令,但根据用户提供的引用,需要整合新的信息。首先,我需要检查用户给出的引用内容,看看有哪些新的命令需要补充到回答中。 用户提供的引用[1]提到了动态修改setting中的分词器,这是一个高级操作,可能在索引配置调整时用到。引用[2]展示了如何获取索引的mapping信息,这也属于索引管理的一部分,我之前可能已经提到过查看索引,但具体获取mapping的命令需要补充。引用[3]是关于集群健康状态的查询,不过用户之前的问题已经涵盖了集群健康检查,可能需要确认是否有新的参数或认证方式需要加入,比如使用--user或HTTPS。引用[4]是关于分片重新分配的,这在处理分片问题时很重要,之前可能没有提到这个命令,需要添加到集群管理部分。 接下来,我需要回顾之前的回答,确保不重复并且补充新内容。例如,之前的回答中已经涵盖了创建索引、查看索引、删除索引,以及文档的增删改查,还有集群健康状态和节点信息。现在需要将用户提供的引用中的新命令整合进去,比如修改分词器、获取mapping、带认证的集群健康检查,以及分片重新分配。 同时,需要注意用户可能的环境差异,比如是否需要认证(如引用[2]中的-u参数和引用[3]中的--user),或者使用HTTPS连接(如引用[3]中的URL)。这些细节需要明确在命令中体现,帮助用户根据实际情况调整。 另外,用户引用的命令中有一些高级操作,比如动态修改setting和分片重新分配,这些可能需要权限或特定条件,应该在说明中注明注意事项,避免用户误操作。 最后,组织这些命令时,需要按照功能分类,比如索引管理、文档操作、集群管理等,让结构清晰,方便用户查找。同时,生成的相关问题需要覆盖用户可能感兴趣的进阶主题,比如性能优化、批量操作、分片策略等,引导用户深入探索。</think>### Elasticsearch 常用 curl 命令示例 #### 一、核心操作命令 1. **索引配置与信息查询** - **动态修改分词器配置** ```shell curl -XPUT 'http://ip:port/indexName/_settings' \ -H 'Content-Type: application/json' \ -d '{ "analysis": { "analyzer": { "full_pinyin_analyzer": { "filter": ["lc_full_pinyin"], "tokenizer": "keyword", "type": "custom" } } } }' ``` > 注:需管理员权限,修改后仅对新文档生效[^1]。 - **获取索引的 mapping 结构** ```shell curl -XGET -u elastic:密码 'http://ip:port/索引名/_mapping?pretty=true' # 显示字段类型和分词规则[^2] ``` 2. **集群与分片管理** - **查看带认证的集群健康状态** ```shell curl --user 用户名:密码 -XGET 'https://域名:端口/_cluster/health?pretty' # 输出包含 green/yellow/red 状态[^3] ``` - **手动分配分片(修复未分配分片)** ```shell curl -XPOST 'localhost:9200/_cluster/reroute' -d '{ "commands": [{ "allocate": { "index": "index-name", "shard": 0, "node": "node-0", "allow_primary": false } }] }' ``` > 注:适用于紧急修复分片分配异常,需谨慎操作[^4]。 --- #### 二、高频实用命令(补充) 1. **批量操作** - 使用 `_bulk` 接口批量插入数据: ```shell curl -XPOST 'http://localhost:9200/_bulk?pretty' -H 'Content-Type: application/json' -d' { "index" : { "_index" : "test", "_id" : "1" } } { "field1" : "value1" } { "index" : { "_index" : "test", "_id" : "2" } } { "field1" : "value2" }' ``` 2. **查询优化** - 强制合并分段(减少内存占用): ```shell curl -XPOST 'http://localhost:9200/索引名/_forcemerge?max_num_segments=1' ``` 3. **安全认证** - 带用户名密码的基础查询: ```shell curl -u elastic:密码 -XGET 'http://localhost:9200/_cat/indices?v' ``` --- #### 三、典型场景命令 1. **测试分词效果** ```shell curl -XPOST 'http://localhost:9200/_analyze?pretty' -H 'Content-Type: application/json' -d' { "analyzer": "standard", "text": "Elasticsearch 分词测试" }' ``` 2. **查看节点线程池状态** ```shell curl -XGET 'http://localhost:9200/_cat/thread_pool?v' ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值