ES-elasticsearch 常用语句
时间: 2024-08-09 12:01:01 浏览: 100
ES (Elasticsearch) 是由 Elasticsearch 公司提供的开源全文搜索及分析引擎,它基于 Lucene,用于构建高性能、分布式的大数据处理系统。ES 支持实时查询,并能高效地处理大量的日志、事件流和其他实时数据源。下面是一些常用的 ES 查询语句及其解释:
### 1. **基本搜索查询**
基础的全文搜索语句,查找包含指定关键字的所有文档。
```json
GET /index_name/_search
{
"query": {
"match": {
"field_name": "keyword"
}
}
}
```
这里 `index_name` 是索引名称,`field_name` 是需要搜索的字段名,`keyword` 是你要搜索的关键字。
### 2. **范围查询**
用于查询特定范围内值的记录。
```json
GET /index_name/_search
{
"query": {
"range": {
"numeric_field": {
"gt": 5,
"lt": 10
}
}
}
}
```
在这个例子中,我们查询 `numeric_field` 字段大于5且小于10的记录。
### 3. **聚合查询**
聚合查询用于对结果集进行统计汇总。
```json
GET /index_name/_search
{
"aggs": {
"my_aggregation": {
"terms": {
"field": "category",
"size": 10
},
"aggs": {
"average_price": {
"avg": {
"field": "price"
}
}
}
}
}
}
```
这个查询会将所有文档按照 `category` 字段分组,并计算每个类别下平均价格。
### 4. **过滤查询**
用于进一步缩小搜索结果的条件筛选。
```json
GET /index_name/_search
{
"query": {
"bool": {
"must": [
{"term": { "status": "active" }},
{"range": {"timestamp": { "gte": "2021-01-01T00:00:00Z", "lte": "2021-12-31T23:59:59Z" }}}
]
}
}
}
```
此查询将只返回状态为“active”且时间戳在2021年之间的文档。
### 5. **高亮显示查询**
用于突出显示查询匹配到的结果。
```json
GET /index_name/_search
{
"highlight": {
"pre_tags": ["<strong>"],
"post_tags": ["</strong>"],
"fields": {
"title": {}
}
},
"query": {
"match": {
"title": "keyword"
}
}
}
```
这将在搜索结果的 `title` 字段中高亮显示匹配的关键字。
### 相关问题:
1. **如何优化 ES 性能?**
2. **ES 的索引是如何工作的?**
3. **在实际项目中如何安全地利用 ES 进行大规模数据检索?**
阅读全文