Elasticsearch 实战:搜索与分析的利器

Elasticsearch 是基于 Apache Lucene 构建的分布式搜索和分析引擎,以其高效、快速和可扩展的特性广泛应用于全文搜索、日志分析、数据监控和大数据处理等场景。本文将深入探讨 Elasticsearch 的实际应用,包括安装和配置、索引和文档管理、高级搜索功能,以及日志分析的实践案例。更多内容,请查阅

一、Elasticsearch 简介
1. 核心概念
  • 索引(Index):类似于关系数据库中的"数据库",是 Elasticsearch 组织数据的基本单位。
  • 文档(Document):类似于关系数据库中的"行",是索引中存储的单个数据实体。
  • 字段(Field):类似于关系数据库中的"列",是文档中存储的具体数据字段。
  • 节点(Node):Elasticsearch 集群中的一个实例。
  • 集群(Cluster):由一个或多个节点组成的 Elasticsearch 实例的集合。
2. 应用场景

Elasticsearch 在以下场景中得到广泛应用:

  • 全文搜索引擎(如内部搜索和电商搜索)
  • 日志和事件数据分析(如 ELK Stack)
  • 实时数据流数据分析(如监控和指标分析)
  • 商业智能(BI)和数据分析
二、安装和配置
1. 安装 Elasticsearch

在 Linux 系统上,可以通过以下步骤安装 Elasticsearch:

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.0-linux-x86_64.tar.gz
tar -xzf elasticsearch-7.10.0-linux-x86_64.tar.gz
cd elasticsearch-7.10.0
./bin/elasticsearch

在 Windows 系统上,可以通过以下步骤安装 Elasticsearch:

  1. 下载 Elasticsearch Windows 版本(zip文件),解压到目标目录。

  2. 打开命令行,进入解压目录,运行以下命令启动 Elasticsearch:

    bin\elasticsearch.bat
    
2. 配置 Elasticsearch

配置文件位于 config/elasticsearch.yml 中,可以进行如下配置:

cluster.name: my-cluster
node.name: node-1
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
3. 验证安装

通过浏览器访问 http://localhost:9200,可以看到 Elasticsearch 的基本信息,表示安装成功。

三、索引和文档管理
1. 创建索引

使用以下命令创建一个新的索引:

curl -X PUT "localhost:9200/my_index"
2. 添加文档

向索引中添加文档:

curl -X POST "localhost:9200/my_index/_doc/1" -H 'Content-Type: application/json' -d'
{
  "title": "Elasticsearch 实战",
  "author": "John Doe",
  "publish_date": "2023-05-01",
  "content": "Elasticsearch 是一个强大的搜索和分析引擎。"
}
'
3. 更新文档

更新文档内容:

curl -X POST "localhost:9200/my_index/_update/1" -H 'Content-Type: application/json' -d'
{
  "doc": {
    "author": "Jane Doe"
  }
}
'
4. 删除文档和索引

删除单个文档或整个索引:

# 删除文档
curl -X DELETE "localhost:9200/my_index/_doc/1"

# 删除索引
curl -X DELETE "localhost:9200/my_index"
四、高级搜索功能
1. 全文搜索

执行全文搜索:

bash 复制代码

curl -X GET "localhost:9200/my_index/_search" -H 'Content-Type: application/json' -d'
{
  "query": {
    "match": {
      "content": "Elasticsearch"
    }
  }
}
'
2. 布尔查询

使用布尔查询进行复杂查询:

curl -X GET "localhost:9200/my_index/_search" -H 'Content-Type: application/json' -d'
{
  "query": {
    "bool": {
      "must": [
        { "match": { "title": "Elasticsearch" } }
      ],
      "filter": [
        { "term": { "author.keyword": "Jane Doe" } }
      ]
    }
  }
}
'
3. 聚合

使用聚合进行数据统计:

curl -X GET "localhost:9200/my_index/_search" -H 'Content-Type: application/json' -d'
{
  "size": 0,
  "aggs": {
    "author_count": {
      "terms": {
        "field": "author.keyword"
      }
    }
  }
}
'
4. 高亮显示

高亮显示搜索结果中的关键字:

curl -X GET "localhost:9200/my_index/_search" -H 'Content-Type: application/json' -d'
{
  "query": {
    "match": {
      "content": "Elasticsearch"
    }
  },
  "highlight": {
    "fields": {
      "content": {}
    }
  }
}
'
五、日志分析实战

使用 Elasticsearch 进行日志分析,是其最为常见的应用之一。通常与 Logstash 和 Kibana 组成 ELK Stack 实现日志的采集、存储、分析和可视化。

1. 安装和配置 Logstash

Logstash 用于从多个来源采集日志并将其传递到 Elasticsearch 中。

wget https://artifacts.elastic.co/downloads/logstash/logstash-7.10.0.tar.gz
tar -xzf logstash-7.10.0.tar.gz
cd logstash-7.10.0

# 配置 Logstash 管道
echo '
input {
  file {
    path => "/var/log/syslog"
    start_position => "beginning"
  }
}
output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "syslog-%{+YYYY.MM.dd}"
  }
}
' > logstash.conf

# 运行 Logstash
bin/logstash -f logstash.conf
2. 安装和配置 Kibana

Kibana 用于数据的可视化分析。

wget https://artifacts.elastic.co/downloads/kibana/kibana-7.10.0-linux-x86_64.tar.gz
tar -xzf kibana-7.10.0-linux-x86_64.tar.gz
cd kibana-7.10.0-linux-x86_64

# 配置 Kibana
echo '
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]
' > config/kibana.yml

# 启动 Kibana
bin/kibana

通过 Web 浏览器访问 http://localhost:5601,可以使用 Kibana 对日志数据进行分析和可视化。

3. 实例:分析系统日志

通过 Kibana 创建仪表盘,对系统日志进行可视化分析。可以创建多个可视化组件,如饼图、折线图、柱状图等,以实时监控系统状态和性能。

相关推荐
DavidSoCool12 分钟前
es 3期 第25节-运用Rollup减少数据存储
大数据·elasticsearch·搜索引擎
Elastic 中国社区官方博客16 分钟前
使用 Elasticsearch 导航检索增强生成图表
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
Elastic 中国社区官方博客3 小时前
设计新的 Kibana 仪表板布局以支持可折叠部分等
大数据·数据库·elasticsearch·搜索引擎·信息可视化·全文检索·kibana
Dusk_橙子12 小时前
在elasticsearch中,document数据的写入流程如何?
大数据·elasticsearch·搜索引擎
喝醉酒的小白15 小时前
Elasticsearch 中,分片(Shards)数量上限?副本的数量?
大数据·elasticsearch·jenkins
熟透的蜗牛17 小时前
Elasticsearch 8.17.1 JAVA工具类
elasticsearch
九圣残炎21 小时前
【ElasticSearch】 Java API Client 7.17文档
java·elasticsearch·搜索引擎
risc1234561 天前
【Elasticsearch】HNSW
elasticsearch
我的棉裤丢了1 天前
windows安装ES
大数据·elasticsearch·搜索引擎
乙卯年QAQ1 天前
【Elasticsearch】RestClient操作文档
java·大数据·elasticsearch·jenkins