概览编辑

Eland 是一个 Python 客户端和工具包,用于在 Elasticsearch 中处理数据帧和机器学习。完整文档可在 Read the Docs 上找到。源代码可在 GitHub 上找到。

兼容性编辑

  • 支持 Python 3.8+ 和 Pandas 1.5
  • 支持 Elasticsearch 7.11+ 集群,建议使用 7.14 或更高版本以确保所有功能正常运行。请确保您的 Eland 主版本与 Elasticsearch 集群的主版本匹配。

在您的 setup.pyrequirements.txt 中设置需求的推荐方法是:

# Elasticsearch 8.x
eland>=8,<9
# Elasticsearch 7.x
eland>=7,<8

入门编辑

创建一个连接到运行在 https://127.0.0.1:9200 上的 Elasticsearch 集群的 DataFrame 对象

>>> import eland as ed
>>> df = ed.DataFrame(
...    es_client="https://127.0.0.1:9200",
...    es_index_pattern="flights",
... )
>>> df
       AvgTicketPrice  Cancelled  ... dayOfWeek           timestamp
0          841.265642      False  ...         0 2018-01-01 00:00:00
1          882.982662      False  ...         0 2018-01-01 18:27:00
2          190.636904      False  ...         0 2018-01-01 17:11:14
3          181.694216       True  ...         0 2018-01-01 10:33:28
4          730.041778      False  ...         0 2018-01-01 05:13:00
...               ...        ...  ...       ...                 ...
13054     1080.446279      False  ...         6 2018-02-11 20:42:25
13055      646.612941      False  ...         6 2018-02-11 01:41:57
13056      997.751876      False  ...         6 2018-02-11 04:09:27
13057     1102.814465      False  ...         6 2018-02-11 08:28:21
13058      858.144337      False  ...         6 2018-02-11 14:54:34

[13059 rows x 27 columns]

Elastic Cloud编辑

您也可以将 Eland 连接到 Elastic Cloud 中的 Elasticsearch 实例

>>> import eland as ed
>>> from elasticsearch import Elasticsearch

# First instantiate an 'Elasticsearch' instance connected to Elastic Cloud
>>> es = Elasticsearch(cloud_id="...", api_key="...")

# then wrap the client in an Eland DataFrame:
>>> df = ed.DataFrame(es, es_index_pattern="flights")
>>> df.head(5)
       AvgTicketPrice  Cancelled  ... dayOfWeek           timestamp
0          841.265642      False  ...         0 2018-01-01 00:00:00
1          882.982662      False  ...         0 2018-01-01 18:27:00
2          190.636904      False  ...         0 2018-01-01 17:11:14
3          181.694216       True  ...         0 2018-01-01 10:33:28
4          730.041778      False  ...         0 2018-01-01 05:13:00
[5 rows x 27 columns]

Eland 可用于执行复杂的查询和聚合

>>> df[df.Carrier != "Kibana Airlines"].groupby("Carrier").mean(numeric_only=False)
                  AvgTicketPrice  Cancelled                     timestamp
Carrier
ES-Air                630.235816   0.129814 2018-01-21 20:45:00.200000000
JetBeats              627.457373   0.134698 2018-01-21 14:43:18.112400635
Logstash Airways      624.581974   0.125188 2018-01-21 16:14:50.711798340