🔍

Elasticsearch 完全学习指南

强大的分布式搜索和分析引擎

什么是 Elasticsearch?

Elasticsearch是基于Lucene的分布式搜索和分析引擎,能够存储、搜索和分析大量数据,常用于全文搜索、日志分析、实时数据监控。

🔍 搜索功能

  • • 全文搜索
  • • 模糊查询
  • • 高亮显示
  • • 搜索建议

📊 分析能力

  • • 聚合统计
  • • 复杂查询
  • • 数据可视化
  • • 实时分析

🚀 核心特性

  • • 分布式架构
  • • 自动分片
  • • RESTful API
  • • 实时索引

安装

# Docker
docker pull elasticsearch:8.8.0
docker run -d -p 9200:9200 -p 9300:9300 \
  -e "discovery.type=single-node" \
  -e "xpack.security.enabled=false" \
  --name elasticsearch elasticsearch:8.8.0

# 验证
curl http://localhost:9200

# Kibana(可视化工具)
docker pull kibana:8.8.0
docker run -d -p 5601:5601 --link elasticsearch \
  -e "ELASTICSEARCH_HOSTS=http://elasticsearch:9200" \
  --name kibana kibana:8.8.0

基础操作

# 创建索引
PUT /blogs
{
  "mappings": {
    "properties": {
      "title": {"type": "text"},
      "content": {"type": "text"},
      "author": {"type": "keyword"},
      "created_at": {"type": "date"}
    }
  }
}

# 插入文档
POST /blogs/_doc
{
  "title": "Elasticsearch入门",
  "content": "这是一个示例文档",
  "author": "John",
  "created_at": "2024-01-01"
}

# 搜索
GET /blogs/_search
{
  "query": {
    "match": {
      "title": "入门"
    }
  }
}

# 聚合
GET /blogs/_search
{
  "size": 0,
  "aggs": {
    "authors": {
      "terms": {
        "field": "author"
      }
    }
  }
}

查询类型

# Match查询
{
  "query": {
    "match": { "title": "search term" }
  }
}

# Term查询
{
  "query": {
    "term": { "status": "published" }
  }
}

# Range查询
{
  "query": {
    "range": {
      "created_at": {
        "gte": "2024-01-01",
        "lte": "2024-12-31"
      }
    }
  }
}

# Bool查询
{
  "query": {
    "bool": {
      "must": [
        {"match": {"title": "elasticsearch"}}
      ],
      "filter": [
        {"term": {"status": "published"}}
      ]
    }
  }
}
← 返回