1. ElasticSearch查询实例解析
作为一名长期使用ElasticSearch的运维工程师,我经常需要处理各种复杂的查询场景。ElasticSearch的强大之处在于它灵活的查询语法和丰富的聚合功能,但这也意味着我们需要深入理解各种查询参数的用法。下面我将分享几个实际工作中常用的查询实例,并详细解释每个参数的作用。
1.1 基础term查询与聚合
最基本的查询方式是使用term进行精确匹配。例如,我们需要查询"内容"字段为"资产/负债"的所有记录,并按"所属年份"进行分组统计:
json复制{
"size": 0,
"query": {
"bool": {
"must": [
{
"term": {
"内容": "资产/负债"
}
}
]
}
},
"aggs": {
"3": {
"terms": {
"field": "所属年份",
"size": 20
},
"aggs": {
"4": {
"terms": {
"field": "数值"
}
}
}
}
}
}
这里有几个关键点需要注意:
size: 0表示不返回原始文档,只返回聚合结果term查询是精确匹配,不会对查询词进行分词- 聚合部分使用了嵌套的terms聚合,先按年份分组,再在每个年份组内按数值分组
提示:term查询对keyword类型的字段效果最好,如果是text类型字段,建议使用match查询
1.2 多条件组合查询
实际工作中,我们经常需要组合多个查询条件。ElasticSearch的bool查询提供了must、should、must_not等子句来实现复杂的逻辑组合。
json复制{
"size": 0,
"query": {
"bool": {
"must": [
{
"term": {
