
elk
安装教程:https://software.share888.top/note/devtool/detail/Elasticsearch.html
查看表列表
shell
GET _cat/indices?v删除表
shell
DELETE test_index别名
查看表别名
shell
GET /<index_name>/_alias结果,表示 test_index_clean 有一个别名 my_data。
shell
{
"test_index_clean": {
"aliases": {
"my_data": {}
}
}
}查看所有表的别名
shell
GET _alias查看某个别名指向哪些表
shell
GET /_alias/<alias_name>查询
查询全部
shell
GET /test_index/_search根据ID查询
shell
GET /your_index_name/_doc/doc_12345批量查询
shell
GET /your_index_name/_search
{
"query": {
"terms": {
"_id": ["doc_1", "doc_2", "doc_3"]
}
}
}单字段查询 - keyword类型
shell
-- 单字段精确查询 user_id是keyword类型
GET /intel_assets_leaked_sessions/_search
{
"query": {
"term": {
"user_id": "7595299113961292855"
}
}
}排序
shell
GET intel_assets_leaked_sessions/_search
{
"size": 10,
"track_total_hits": true,
"sort": [
{
"collect_date": {
"order": "desc"
}
}
]
}日常开发中最常用组合
对应的sql
sql
SELECT
*
FROM
表名
WHERE
status = 'published'
AND publish_date >= '2025-01-01'
AND title LIKE '%elasticsearch%'
OR priority = 'high'
ORDER BY publish_date DESC
LIMIT 20;对应的DSL
json
{
"query": {
"bool": {
"must": [{"match": {"title": "elasticsearch"}}],
"filter": [
{"term": {"status": "published"}},
{"range": {"publish_date": {"gte": "2025-01-01"}}}
],
"should": [{"term": {"priority": "high"}}]
}
},
"sort": [{"publish_date": "desc"}],
"from": 0,
"size": 20,
"track_total_hits": true
}Elasticsearch 常见查询分类速览
一、精确匹配类(用于 keyword、数值、布尔、日期)
| 查询类型 | 说明 | 示例 |
|---|---|---|
| term | 单个精确值匹配 | {"term":{"status":"active"}} |
| terms | 多值匹配(任意一个) | {"terms":{"tags":["java","es"]}} |
| range | 范围查询(数字/日期) | {"range":{"age":{"gte":18,"lte":30}}} |
| exists | 字段存在(非 null) | {"exists":{"field":"email"}} |
| ids | 根据 _id 匹配 | {"ids":{"values":["1","2"]}} |
二、全文搜索类(用于 text 类型,会分词)
| 查询类型 | 说明 | 示例 |
|---|---|---|
| match | 标准全文检索(分词后 OR 关系) | {"match":{"content":"elasticsearch教程"}} |
| match_phrase | 短语匹配(顺序一致,slop 可调间隔) | {"match_phrase":{"content":"快速入门"}} |
| match_phrase_prefix | 短语前缀匹配(支持自动补全) | {"match_phrase_prefix":{"title":"弹"}} |
| multi_match | 在多个字段上执行 match | {"multi_match":{"query":"搜索词","fields":["title","body"]}} |
| query_string | 支持 Lucene 语法的复杂查询 | {"query_string":{"default_field":"content","query":"(快速 AND 入门) OR 高级"}} |
三、组合与逻辑查询
| 查询类型 | 说明 | 示例 |
|---|---|---|
| bool | 组合多个子句(must/should/must_not/filter) | {"bool":{"must":[{"match":{"title":"ES"}}],"filter":[{"range":{"price":{"lte":100}}]}}} |
| constant_score | 包裹过滤查询,固定评分 | {"constant_score":{"filter":{"term":{"status":"published"}}}} |
注意:
filter子句不参与评分,可缓存,性能极高,适合范围/状态过滤。
四、模糊与通配符
| 查询类型 | 说明 | 示例 |
|---|---|---|
| wildcard | 通配符(* 任意多字符,? 单个) | {"wildcard":{"name":"张*"}} |
| regexp | 正则表达式匹配 | {"regexp":{"email":".*@gmail\\.com"}} |
| fuzzy | 模糊匹配(编辑距离) | {"fuzzy":{"title":{"value":"elasticsearh","fuzziness":"AUTO"}}} |
| prefix | 前缀匹配 | {"prefix":{"city":"杭"}} |
五、聚合(Aggregation)—— 统计、分组、指标
虽不属“查询”,但在实际业务中常与查询并用:
- terms 聚合:按字段分组计数
- avg / sum / min / max / stats 指标聚合
- date_histogram:按时间间隔统计
- nested / reverse_nested:处理嵌套对象

