好消息!Elasticsearch中也可以使用机器学习了

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 机器学习已经在现在的工业实践中得到了广泛的应用。作为强大搜索引擎的ElasticSearch也在6.3开始内置了对机器学习的支持。

本文作者:bright,物联网公司大数据架构师。曾就职于暴风科技,金山云等企业。对大数据架构和机器学习有浓厚兴趣。

如果你想一站式快速体验 Elasticsearch 所有功能(免费提供机器学习、 X-pack 能力),开通 阿里云 Elasticsearch 1核2G,即可首月免费试用。

前言

机器学习已经在现在的工业实践中得到了广泛的应用。作为强大搜索引擎的ElasticSearch也在6.3开始内置了对机器学习的支持。

image.png

概述

从应用角度来看,如果你有异常侦测和数据回归方面的需求,并且数据不需要特别处理,直接从es里就可以接入,可以选择Es内置的机器学习功能,这样又快又迅速。但是如果要借助更多的机器学习算法来进行建模,选择python的Eland模块进行机器学习就比较合适。下面会就这2种机器学习方式,从安装到应用进行一一介绍。

image.png

Elasticsearch 内置的机器学习

Kibana主页上加载样本Web日志数据集后,点击 查看数据> ML作业
在机器学习应用程序中,当您kibana_sample_data_logs 在"数据可视化工具""异常检测"作业向导中选择索引模式时,使用其已知配置创建作业。选择 Kibana示例数据Web日志配置。
Kibana支持四种类型的机器学习作业
1、在Kibana中,Single-metric jobs:数据分析仅在一个索引字段上执行
2、Multi-metric jobs:可以对多个索引字段执行数据分析; 但是,每个字段都分别进行分析
3、Advanced jobs:可以对多个索引字段执行数据分析。提供检测器和影响者的完整配置设置
4、 Population jobs:对不常见数据(例如检测总体中的异常值)的分布行为的数据分析

现在以Single-metric jobs为例,学习如何使用Elasticsearch内建机器学习功能。

样本作业(low_request_rate)之一是单个度量异常检测作业。它具有使用该low_count功能和有限工作属性的单个检测器。如果要确定网站上的请求率何时显着下降,则可以使用这样的工作。

让我们从在Single Metric Viewer中查看这个简单的工作开始 :

image.png

该视图包含一个图表,该图表表示一段时间内的实际值和期望值。仅当作业已model_plot_config启用时才可用。它只能显示一个时间序列。

图表中的蓝线代表实际数据值。蓝色阴影区域表示期望值的界限。上限和下限之间的区域是模型最可能的值。如果某个值不在该区域内,则可以说它是异常的。

将时间选择器滑动到时间序列中包含红色异常数据点的部分。如果将鼠标悬停在该点上,则可以查看更多信息。除了异常侦测,es还可以方便的做数值回归预测。

python的eland模块

如果需要引入更多的机器学习模型训练方式,可以使用eland模块来和ElasticSearch协作。

为什么会有eland?

数据科学家通常不习惯NoSQL数据库引擎执行常见任务,甚至不依赖复杂的REST API进行分析。例如,使用Elasticsearch的低级python客户端处理大量数据也不是那么直观,并且对于来自SWE以外领域的人来说,学习曲线有些陡峭。

尽管Elastic为增强用于分析和数据科学用例的ELK堆栈做出了巨大的努力,但它仍然缺乏与现有数据科学生态系统(pandas,numpy,scikit-learn,PyTorch和其他流行的库)的便捷接口。

的推出是一个全新的Python Elasticsearch客户端和工具包,具有强大(且熟悉)的类似于pandas的API,用于分析,ETL和机器学习。

Eland在可能的情况下使用现有的Python API和数据结构来简化在numpy,pandas,scikit-learn和其Elasticsearch支持的等效项之间的切换。通常,数据驻留在Elasticsearch中,而不是内存中,这使Eland可以访问Elasticsearch中存储的大型数据集。Eland还提供了一些工具,可以从,和等通用库经过训练的机器学习模型上传到Elasticsearch中。

Eland使数据科学家可以有效地使用已经强大的Elasticsearch分析和ML功能,而无需对Elasticsearch及其许多复杂知识有深入的了解。

Elasticsearch的功能和概念被转换为更易于识别的设置。例如,Elasticsearch索引及其文档,映射和字段成为具有行和列的数据框,就像我们以前在使用pandas时所看到的那样。

Eland的安装

可以使用Pip从安装Eland :
$ python -m pip安装eland
也可以使用Conda从安装Eland :
$ conda安装-c conda-forge eland

Eland链接Elasticsearch

Eland使用连接到Elasticsearch。该客户端支持一系列。可以将实例传递elasticsearch.Elasticsearch给Eland API,也可以将包含主机的字符串传递给以下对象:

import eland as ed
# Connecting to an Elasticsearch instance running on 'localhost:9200'
df = ed.DataFrame("localhost:9200", es_index_pattern="flights")
# Connecting to an Elastic Cloud instance
from elasticsearch import Elasticsearch
es = Elasticsearch(
cloud_id="cluster-name:...",
http_auth=("elastic", "<password>")
)
df = ed.DataFrame(es, es_index_pattern="flights")

用eland进行机器学习

eland.DataFrame在类似于Pandas的API中包装Elasticsearch索引,并将所有对数据的处理和过滤推迟到Elasticsearch而不是本地计算机上进行。这意味着您可以从Jupyter Notebook中在Elasticsearch中处理大量数据,而不会导致计算机过载。
现在可以对xboost框架进行模型训练后,将模型部署到Elasticsearch,就可以直接实现对数据的预测了。一切很简单。

>>> from xgboost import XGBClassifier
>>> from eland.ml import ImportedMLModel
# Train and exercise an XGBoost ML model locally
>>> xgb_model = XGBClassifier(booster="gbtree")
>>> xgb_model.fit(training_data[0], training_data[1])
>>> xgb_model.predict(training_data[0])
[0 1 1 0 1 0 0 0 1 0]
# Import the model into Elasticsearch
>>> es_model = ImportedMLModel(
es_client="localhost:9200",
model_id="xgb-classifier",
model=xgb_model,
feature_names=["f0", "f1", "f2", "f3", "f4"],
)
# Exercise the ML model in Elasticsearch with the training data
>>> es_model.predict(training_data[0])
[0 1 1 0 1 0 0 0 1 0]

结束语

Elasticsearch 作为搜索引擎,赋能了快速排序,搜索的场景。现在内置的机器学习模块为借助es搜索的场景又增加了异常侦测,回归预测等强大的ai能力,无疑为es在和其他搜索引擎竞争中增加了强大助力。对这方面有兴趣的读者,可以关注我们,持续获取这方面资讯。

声明:

本文版权归作者所有,未经许可不得擅自转载或引用。


image.png

阿里云Elastic Stack】100%兼容开源ES,独有9大能力,提供免费 X-pack服务(单节点价值$6000)

相关活动


更多折扣活动,请访问阿里云 Elasticsearch 官网

阿里云 Elasticsearch 商业通用版,1核2G ,SSD 20G首月免费
阿里云 Logstash 2核4G首月免费
下载白皮书:Elasticsearch 八大经典场景应用


image.png

image.png

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
4月前
|
机器学习/深度学习 存储 数据采集
Elasticsearch 与机器学习的集成
【9月更文第3天】Elasticsearch 不仅仅是一个强大的分布式搜索和分析引擎,它还是一个完整的数据平台,通过与 Kibana、Logstash 等工具结合使用,能够提供从数据采集、存储到分析的一站式解决方案。特别是,Elasticsearch 集成了机器学习(ML)功能,使得在实时数据流中进行异常检测和趋势预测成为可能。本文将详细介绍如何利用 Elasticsearch 的 ML 功能来检测异常行为或预测趋势。
156 4
|
5月前
|
机器学习/深度学习 数据采集 缓存
Elasticsearch与机器学习集成的最佳实践
【8月更文第28天】Elasticsearch 提供了强大的搜索和分析能力,而机器学习则能够通过识别模式和预测趋势来增强这些能力。将两者结合可以实现更智能的搜索体验、异常检测等功能。
150 0
|
机器学习/深度学习 监控 安全
阿里云Elasticsearch的X-Pack:机器学习、安全保障和可视化
ELK是日志分析领域较为流行的技术选择,不少阿里云用户选择在ECS上搭建开源Elasticsearch。与自建开源Elastisearch相比,阿里云Elasticsearch做了性能优化,支持弹性扩容,并搭载了商业版组件X-Pack,为用户提供即开即用的托管服务。
6283 0
|
机器学习/深度学习
【X-Pack解读】阿里云Elasticsearch X-Pack 机器学习组件功能详解
阿里云Elasticsearch集成了Elastic Stack商业版的X-Pack组件包,包括安全、告警、监控、报表生成、图分析、机器学习等组件,用户可以开箱即用。本文将对X-Pack 的机器学习功能进行详细解读。
6846 0
|
2月前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
71 5
|
3月前
|
存储 JSON Java
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
这篇文章是关于Elasticsearch的学习指南,包括了解Elasticsearch、版本对应、安装运行Elasticsearch和Kibana、安装head插件和elasticsearch-ik分词器的步骤。
297 0
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
|
4月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
5月前
|
数据可视化 Docker 容器
一文教会你如何通过Docker安装elasticsearch和kibana 【详细过程+图解】
这篇文章提供了通过Docker安装Elasticsearch和Kibana的详细过程和图解,包括下载镜像、创建和启动容器、处理可能遇到的启动失败情况(如权限不足和配置文件错误)、测试Elasticsearch和Kibana的连接,以及解决空间不足的问题。文章还特别指出了配置文件中空格的重要性以及环境变量中字母大小写的问题。
一文教会你如何通过Docker安装elasticsearch和kibana 【详细过程+图解】
|
5月前
|
JSON 自然语言处理 数据库
Elasticsearch从入门到项目部署 安装 分词器 索引库操作
这篇文章详细介绍了Elasticsearch的基本概念、倒排索引原理、安装部署、IK分词器的使用,以及如何在Elasticsearch中进行索引库的CRUD操作,旨在帮助读者从入门到项目部署全面掌握Elasticsearch的使用。
|
5月前
|
Ubuntu Oracle Java
如何在 Ubuntu VPS 上安装 Elasticsearch
如何在 Ubuntu VPS 上安装 Elasticsearch
66 0

热门文章

最新文章

相关产品

  • 检索分析服务 Elasticsearch版