如何用ElasticSearch进行机器学习
前言
工业实践中, 如今机器学习已获得广泛应用。而作为强大搜索引擎的, 6.3起也开始内置对机器学习的支持。

也在6.3开始内置了对机器学习的支持
概述
假使你存在异常侦测以及数据回归需求, 且数据无需特别处理, 能直接从es接入, 从应用角度而言, 可选用Es内置的机器学习功能, 这般又快又迅速, 然而要是想借助更多机器学习算法来建模, 挑选Eland模块进行机器学习便较为合适, 下面会针对这两种机器学习方式, 从安装直至应用逐一予以介绍。

Es内置的机器学习功能
内置的机器学习
样品网络记录集合在主页加载之后, 去点击查看数据, 然后点击ML作业。
对于机器学习应用程序而言, 当您在ogs于“数据可视化工具”以及“异常检测”作业向导里挑选索引模式之际, 会借助其已知配置去创建作业, 选择示例数据Web日志配置。
支持四种类型的机器学习作业
之一的样本作业, 是单个度量异常检测作业, 它有着具有使用该功能和有限工作属性的单个检测器, 要是想确定网站上的请求率何时显著下降, 便能够使用如此的工作。
让我们从在 中查看这个简单的工作开始 :

包含有一个图表的该视图, 此图表用以表示一段时间之内的实际值以及期望值, 仅在作业已经启用的情形下才能够使用, 它只可以显示一个时间序列。
图表里头的蓝线, 代表着实际的数据值, 蓝色的阴影区域, 表明的是期望值的界限, 上限跟下限之间的区域, 是模型最为可能的值, 要是某个值不在这个区域当中, 那就能够说它是异常的。
把时间选择器朝着时间序列里有着红色异常数据点的那部分进行滑动。要是把鼠标放到该点之上, 那么就能够查看更多的信息。除去异常侦测之外, es还能够便利地开展数值回归预测。
的eland模块
要是有引入这般更多数量的机器学习模型训练方式的需求, 那么能够运用eland模块去进行协作。
为什么会有eland?
数据科学家一般不习惯于让NoSQL数据库引擎去执行常见任务, 甚至并非依赖复杂异常的REST API来开展分析。比如说, 运用的低级客户端处理海量数据也并非那般直观, 而且对于来自SWE以外领域之人而言, 学习曲线有些陡峭得很。
即便在为强化用于进行分析以及数据科学场景应用所对应的ELK堆栈方面投入了极大的精力, 然而它依旧欠缺与现有的数据科学生态体系中的(, 像是numpy, -learn, 以及其他一些颇为流行的库)便捷的交互接口。
这次推出的, 是一个全新的客户端,还有一个全新的工具包, 它具备强大的、类似于另一种工具的API, 且这种API人们较为熟悉, 它能够被用于分析工作, 也能用于ETL工作, 还能用于机器学习工作。
Eland在具备可能性情形下运用现有的API以及数据结构用以简化在numpy、-learn以及其对应的等效项之间的转换, 通常而言, 数据留存于其中, 而非内存里, 这致使Eland能够对其中所存储的大型数据集进行访问, Eland还给出了一些工具, 能够把从、和等通用库经过训练的机器学习模型上传至中。
ELAND让数据科学家能够有效地运用已然强大的分析以及ML功能, 而且不需要对极为众多的复杂知识具备深入的了解。
被转换成为更易于识别的设置的是功能以及概念, 举例来讲, 索引跟其文档, 映射与字段变成有着行和列的数据框, 仿佛我们之前使用期间所目睹的那般。
Eland的安装
可以使用Pip从安装Eland :
$ python -m pip安装eland
也可以使用Conda从安装Eland :
$ conda安装-c conda-forge eland
Eland链接Es
Eland使用连接到。该客户端支持一系列。可以将实例传递
给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", "")
)
df = ed.DataFrame(es, es_index_pattern="flights")
用eland进行机器学习
eland 在仿若之类的 API 里对索引予以包装, 并且将所有针对数据的处理以及过滤延迟到期而非本地计算机上去施行。这表明您能够从中于中处理数量众多的数据, 而不会致使计算机出现过载情况。
当下能够予以框架开展模型训练, 之后把模型部署至, 如此便可径直达成对数据的预测。全部极为简易。
>>> 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]
结束语
es身为搜索引擎, 给予了快速排序, 搜索的场景以赋能。如今内置的机器学习模块, 为借助es搜索的场景增添了异常侦测, 回归预测等强大的ai能力, 无疑给es在与其他搜索引擎竞争当中增添了强大助力。对这方面有兴趣的读者, 能够关注我们, 持续获取这方面资讯。
更多推荐
所有评论(0)