Elasticsearch权威指南:文档检索与搜索基础教程

Elasticsearch权威指南:文档检索与搜索基础教程

elasticsearch-definitive-guide The Definitive Guide to Elasticsearch elasticsearch-definitive-guide 项目地址: https://gitcode.com/gh_mirrors/el/elasticsearch-definitive-guide

引言

作为分布式搜索和分析引擎,Elasticsearch提供了强大的文档检索和搜索能力。本文将深入讲解Elasticsearch中的基本检索操作和搜索功能,帮助开发者快速掌握核心概念。

文档检索基础

单文档检索

在Elasticsearch中检索单个文档非常简单,只需要指定三个关键信息:

  1. 索引名称(index)
  2. 类型名称(type)
  3. 文档ID

使用GET请求可以轻松获取文档:

GET /megacorp/employee/1

响应结果包含文档元数据和原始JSON内容:

{
  "_index": "megacorp",
  "_type": "employee",
  "_id": "1",
  "_version": 1,
  "found": true,
  "_source": {
    "first_name": "John",
    "last_name": "Smith",
    "age": 25,
    "about": "I love to go rock climbing",
    "interests": ["sports", "music"]
  }
}

关键点说明

  • _source字段包含文档原始内容
  • 元数据包含索引、类型、ID和版本信息
  • 可以通过修改HTTP方法实现不同操作(GET/DELETE/HEAD/PUT)

搜索入门

简单搜索

使用_search端点可以执行搜索操作,默认返回前10个匹配结果:

GET /megacorp/employee/_search

响应包含匹配文档数组和相关度评分:

{
  "hits": {
    "total": 3,
    "max_score": 1,
    "hits": [
      {
        "_score": 1,
        "_source": {
          "first_name": "Douglas",
          "last_name": "Fir",
          "age": 35,
          "about": "I like to build cabinets",
          "interests": ["forestry"]
        }
      },
      ...
    ]
  }
}

查询字符串搜索

对于简单条件搜索,可以使用查询字符串语法:

GET /megacorp/employee/_search?q=last_name:Smith

这种轻量级搜索适合命令行快速查询,但功能有限。

查询DSL进阶

Elasticsearch提供了更强大的查询DSL(领域特定语言),使用JSON格式构建复杂查询。

基本匹配查询

GET /megacorp/employee/_search
{
  "query": {
    "match": {
      "last_name": "Smith"
    }
  }
}

组合查询与过滤

结合bool查询和range过滤器可以实现复杂条件:

GET /megacorp/employee/_search
{
  "query": {
    "bool": {
      "must": {
        "match": { "last_name": "smith" }
      },
      "filter": {
        "range": { "age": { "gt": 30 } }
      }
    }
  }
}

查询结构解析

  • must:必须匹配的条件
  • filter:过滤条件(不参与评分)
  • range:范围查询(gt表示大于)

全文搜索实战

基础全文搜索

GET /megacorp/employee/_search
{
  "query": {
    "match": {
      "about": "rock climbing"
    }
  }
}

Elasticsearch会根据相关性评分排序结果,考虑以下因素:

  • 匹配词项的数量
  • 词项在字段中出现的频率
  • 字段长度等

短语匹配

精确匹配完整短语使用match_phrase

GET /megacorp/employee/_search
{
  "query": {
    "match_phrase": {
      "about": "rock climbing"
    }
  }
}

搜索结果高亮

高亮功能可以帮助用户快速识别匹配内容:

GET /megacorp/employee/_search
{
  "query": {
    "match_phrase": {
      "about": "rock climbing"
    }
  },
  "highlight": {
    "fields": {
      "about": {}
    }
  }
}

响应中包含高亮片段:

{
  "highlight": {
    "about": [
      "I love to go <em>rock</em> <em>climbing</em>"
    ]
  }
}

总结

本文详细介绍了Elasticsearch中的文档检索和搜索功能,从基础的单文档获取到复杂的全文搜索和高亮显示。掌握这些核心功能是使用Elasticsearch的基础,后续可以进一步学习聚合分析、索引管理等高级特性。

关键要点

  • 使用GET方法检索文档
  • _search端点执行搜索操作
  • 查询DSL提供强大的搜索能力
  • 全文搜索基于相关性评分
  • 高亮功能提升用户体验

elasticsearch-definitive-guide The Definitive Guide to Elasticsearch elasticsearch-definitive-guide 项目地址: https://gitcode.com/gh_mirrors/el/elasticsearch-definitive-guide

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伏崴帅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值