当前位置: 首页 > article >正文

【ELK】【Elasticsearch】数据查询方式

1. 简单查询(URI Search)

通过 URL 参数直接进行查询,适合简单的搜索场景。

示例

bash

复制

GET /index_name/_search?q=field_name:search_value

说明

  • index_name:索引名称。

  • field_name:字段名称。

  • search_value:搜索值。

特点

  • 简单易用,适合快速测试。

  • 功能有限,不支持复杂的查询逻辑。


2. DSL 查询(Query DSL)

使用 Elasticsearch 的 Query DSL(Domain Specific Language)进行查询,支持复杂的查询逻辑。

示例

json

复制

GET /index_name/_search
{
  "query": {
    "match": {
      "field_name": "search_value"
    }
  }
}

常用查询类型

  • Match Query:全文搜索,支持分词。

    json

    复制

    {
      "query": {
        "match": {
          "field_name": "search_value"
        }
      }
    }
  • Term Query:精确匹配,不支持分词。

    json

    复制

    {
      "query": {
        "term": {
          "field_name": {
            "value": "search_value"
          }
        }
      }
    }
  • Range Query:范围查询。

    json

    复制

    {
      "query": {
        "range": {
          "field_name": {
            "gte": 10,
            "lte": 20
          }
        }
      }
    }
  • Bool Query:组合查询(支持 mustshouldmust_not)。

    json

    复制

    {
      "query": {
        "bool": {
          "must": [
            { "match": { "field1": "value1" } },
            { "match": { "field2": "value2" } }
          ]
        }
      }
    }

特点

  • 功能强大,支持复杂的查询逻辑。

  • 适合生产环境使用。


3. 聚合查询(Aggregations)

用于对数据进行统计和分析,支持多种聚合操作(如求和、平均值、分组等)。

示例

json

复制

GET /index_name/_search
{
  "size": 0,
  "aggs": {
    "group_by_field": {
      "terms": {
        "field": "field_name"
      }
    }
  }
}

常用聚合类型

  • Terms Aggregation:按字段值分组。

  • Metric Aggregation:计算指标(如 sumavgmaxmin)。

  • Date Histogram Aggregation:按时间区间分组。

  • Nested Aggregation:嵌套聚合。

特点

  • 适合数据分析场景。

  • 可以结合 Query DSL 使用。


4. 过滤查询(Filter Context)

用于过滤数据,通常与 Query DSL 结合使用。

示例

json

复制

GET /index_name/_search
{
  "query": {
    "bool": {
      "filter": [
        { "term": { "field_name": "value" } }
      ]
    }
  }
}

特点

  • 过滤条件不参与评分,性能较高。

  • 适合精确匹配场景。


5. 高亮查询(Highlighting)

用于高亮显示搜索结果中的匹配部分。

示例

json

复制

GET /index_name/_search
{
  "query": {
    "match": {
      "field_name": "search_value"
    }
  },
  "highlight": {
    "fields": {
      "field_name": {}
    }
  }
}

特点

  • 适合需要突出显示搜索结果的场景。


6. 分页查询(Pagination)

用于分页获取数据。

示例

json

复制

GET /index_name/_search
{
  "from": 0,
  "size": 10,
  "query": {
    "match_all": {}
  }
}

说明

  • from:起始位置。

  • size:每页大小。

特点

  • 适合大数据量的分页查询。


7. 排序查询(Sorting)

用于对搜索结果进行排序。

示例

json

复制

GET /index_name/_search
{
  "query": {
    "match_all": {}
  },
  "sort": [
    { "field_name": { "order": "asc" } }
  ]
}

特点

  • 支持多字段排序。

  • 可以结合分页查询使用。


8. 脚本查询(Script Query)

使用脚本进行自定义查询。

示例

json

复制

GET /index_name/_search
{
  "query": {
    "script": {
      "script": {
        "source": "doc['field_name'].value > params.value",
        "params": {
          "value": 10
        }
      }
    }
  }
}

特点

  • 支持复杂的自定义逻辑。

  • 性能较低,慎用。


9. 嵌套查询(Nested Query)

用于查询嵌套类型的字段。

示例

json

复制

GET /index_name/_search
{
  "query": {
    "nested": {
      "path": "nested_field",
      "query": {
        "match": {
          "nested_field.sub_field": "value"
        }
      }
    }
  }
}

特点

  • 适合处理嵌套结构的文档。


10. 跨索引查询(Cross-Index Search)

可以同时查询多个索引的数据。

示例

json

复制

GET /index1,index2/_search
{
  "query": {
    "match_all": {}
  }
}

特点

  • 适合需要从多个索引中查询数据的场景。


总结

Elasticsearch 提供了丰富的查询方式,可以根据不同的需求选择合适的查询方法:

  • 简单查询:适合快速测试。

  • DSL 查询:功能强大,适合生产环境。

  • 聚合查询:适合数据分析。

  • 过滤查询:适合精确匹配。

  • 高亮查询:适合突出显示搜索结果。

  • 分页查询:适合大数据量场景。

  • 脚本查询:支持自定义逻辑。

根据具体场景选择合适的查询方式,可以提高查询效率和准确性。


http://www.kler.cn/a/556701.html

相关文章:

  • 排序与算法:插入排序
  • EasyRTC:基于WebRTC与P2P技术,开启智能硬件音视频交互的全新时代
  • 安全面试1
  • 【Python】打造自己的HTTP server
  • OpenGauss MySQL兼容库迁移
  • Java 中 HTTP 协议版本使用情况剖析
  • 【QT 网络编程】HTTP协议(二)
  • SQLMesh 系列教程6- 详解 Python 模型
  • 物联网与大数据:揭秘万物互联的新纪元
  • (网络安全)渗透测试
  • 想象一个AI保姆机器人使用场景分析
  • 如何使用 JavaScript 模拟 Docker 中的 UnionFS 技术:从容器到文件系统的映射
  • 8.python文件
  • 纳米科技新突破:AbMole助力探索主动脉夹层的基因密码
  • Java 同步锁性能的最佳实践:从理论到实践的完整指南
  • Java中JDK、JRE,JVM之间的关系
  • 【全栈】SprintBoot+vue3迷你商城(12)
  • 企业商业秘密百问百答之五十三【商业秘密转让】
  • 【目标检测】【PANet】Path Aggregation Network for Instance Segmentation
  • 九联UNT403AS_晶晨S905L3S芯片_2+8G_安卓9.0_卡刷固件包