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

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 创建仪表盘,对系统日志进行可视化分析。可以创建多个可视化组件,如饼图、折线图、柱状图等,以实时监控系统状态和性能。


http://www.kler.cn/news/368525.html

相关文章:

  • shodan3,vnc空密码批量连接,ip历史记录查找
  • 机器视觉-相机、镜头、光源(总结)
  • pip在ubuntu下换源
  • 从零实现数据结构:一文搞定所有排序!(下集)
  • 深入解析机器学习算法
  • C#实现简单的文件夹对比程序
  • Vmware虚拟机引起的windowswifi功能消失异常
  • Centos7.9安装MySQL(二进制)
  • 端到端测试?何必Postman,试试Automan
  • netty之ServerBootstrap和Bootstrap
  • 优先算法:双指针、移动零
  • 程序员修仙传
  • Git详解
  • 使用教程:基于 uiautomator2 和 pytest 的图片相似度测试脚本
  • BERT 的 12 层维度变化详解:从输入到输出的逐步剖析
  • Kafka消费者故障,出现活锁问题如何解决?
  • UE材质节点arctangent2解析
  • 重学SpringBoot3-Spring WebFlux之Reactor事件感知 API
  • 机器视觉:9点标定的原理与实现
  • [专有网络VPC]ECS安全组配置案例
  • 【Python知识】一个强大的数据分析库Pandas
  • 基于Python的B站视频数据分析与可视化
  • Spring Boot框架下租房管理系统的设计与实现
  • spring-ai-alibaba下载
  • 【认知智能】编译器1
  • DataX