Elasticsearch常用查询命令

本文分享了Elasticsearch中常见的查询技巧,包括如何进行精确匹配、范围过滤、排序及分组统计等操作,并提供了实际使用的JSON样例。

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

记录下日常工作中常用的Elasticsearch查询命令以备后用(后期会不定时更新)
一个完整的Elasticsearch查询

GET event_index/_search
{
	"query": {
		"bool": {
			"must": [{
				"match": {
					"data.largeClassName": "取件"
				}
			}],
			"filter": {
				"range": {
					"data.startTime": {
						"gte": 1562515200000,
						"lte": 1562587200000
					}
				}
			}
		}
	},
	"sort": [{
		"data.startTime": "desc"
	}],
	"from": 2,
	"size": 2,
	"_source": ["data.bl_name", "data.userName", "data.largeClassName", "data.largeClassCode", "data.subClassName", "data.userCode", "data.startTime", "data.endTime"]
}

获取今天的数据,按largeClassName字段的值统计数据量:

{
	"size": 0,
	"query": {
		"bool": {
			"filter": {
				"range": {
					"data.startTime": {
						"gte": 1562428800000,
						"lte": 1562515200000
					}
				}
			}
		}
	},
	"aggs": {
		"aggs_class": {
			"terms": {
				"field": "data.largeClassName"
			}
		}
	}
}

分组统计2019年4月1日到5月1日之间每天的数据量:

{
	"size": 0,
	"aggs": {
		"cnt_day": {
			"filter": {
				"range": {
					"data.startTime": {
						"gte": 1554048000000,
						"lte": 1556640000000
					}
				}
			},
			"aggs": {
				"test_aaa": {
					"date_histogram": {
						"field": "data.startTime",
						"interval": "1d",
						"format": "yyyy-MM-dd"
					}
				}
			}
		}
	}
}

查询一个字段多个值:

{
	"query": {
		"bool": {
			"must": [{
				"terms": {
					"deptname": ["公安部", "房管局", "交通部", "城管"]
				}
			}]
		}
	}
}

{
	"query": {
		"bool": {
			"must": [{
				"match": {
					"data.eventType": "交通事故"
				}
			}, {
				"match": {
					"data.findType": "110报警"
				}
			}]
		}
	}
}

删除数据:

POST area_index/_delete_by_query
{
	"query": {
		"match_all": {}
	}
}

查看别名:

GET _cat/aliases

创建别名:

POST _aliases
{
	"actions": [{
		"add": {
			"index": "active_dev_status_index",
			"alias": "active_status"
		}
	}]
}

删除索引:

DELETE active_status
<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、付费专栏及课程。

余额充值