Elasticsearch
## 概述
Elrond节点可以在 Elasticsearch 实例中启用索引。索引数据将作为历史数据源,可用于搜索目的或服务于前端应用程序。
提示
由于可能的高数据量,不建议在 Elasticsearch from 中使用验证器作为索引节点。
我们的实现使用了队列的概念,并确保所有的事情都得到处理。由于索引的原因,共识和同步机制可能会有延迟。
设置
为了设置一个在 Elasticsearch 中建立索引的 observer,必须从节点的配置目录中更新external.toml
文件。最低配置是将Enabled
设置为true
,其余字段相应更新(URL
、Username
、Password
)。
配置的一个例子是:
# ElasticSearchConnector defines settings related to ElasticSearch such as login information or URL
[ElasticSearchConnector]
## We do not recommend to activate this indexer on a validator node since
#the node might loose rating (even facing penalties) due to the fact that
#the indexer is called synchronously and might block due to external causes.
#Strongly suggested to activate this on a regular observer node.
Enabled = true
IndexerCacheSize = 0
BulkRequestMaxSizeInBytes = 4194304 # 4MB
URL = "http://localhost:9200"
UseKibana = false
Username = "elastic-username"
Password = "elastic-password"
# EnabledIndexes represents a slice of indexes that will be enabled for indexing. Full list is:
# ["rating", "transactions", "blocks", "validators", "miniblocks", "rounds", "accounts", "accountshistory", "receipts", "scresults", "accountsesdt", "accountsesdthistory", "epochinfo", "scdeploys", "tokens", "tags", "logs", "delegators", "operations"]
EnabledIndexes = ["rating", "transactions", "blocks", "validators", "miniblocks", "rounds", "accounts", "accountshistory", "receipts", "scresults", "accountsesdt", "accountsesdthistory", "epochinfo", "scdeploys", "tokens", "tags", "logs", "delegators", "operations"]
Kibana
可用于可视化弹性数据。Kikana 的路径必须是_plugin/kibana/api
(如 AWS 托管实例所示)。
EnabledIndexes
数组指定将要填充的索引。
代理支持
elrond-proxy 中有一些端点依赖于 Elasticsearch 实例。他们可以在这里找到。
多片
为了拥有整个网络的历史,必须为每个分片(0、1、2 和元链)中的节点启用弹性索引。一些确保数据有效性的特性依赖于这样一个事实,即每个碎片的一个节点在数据库中建立索引。例如,跨碎片交易的状态由目标碎片决定。
Elasticsearch集群系统需求
Elasticsearch 集群可以安装在多台机器上(我们建议在一个集群中安装更多节点),也可以安装在一台机器上。
如果是单台机器,我们的建议如下:
- 12 个 CPU
- 32 GB 内存
- 最高可达 3 TB 的磁盘空间
- 100 Mbit/s 不间断互联网连接
克隆一个Elasticsearch集群
为了在一个Elasticsearch集群中拥有关于Elrond链的所有信息(从起源到当前时间),必须使用特定工具将所有数据从一个Elasticsearch集群复制到另一个集群。要获得更多关于如何做到这一点的信息,请使用这个库中的文档。
Elasticsearch 索引
启用弹性索引器的观察小组将在不同的索引中保存数据。该数据用于多个用例。例如,获取属于某个地址的所有交易,或者显示基于 EGLD 余额排序的所有地址。
Elasticsearch 索引中的每个条目的格式如下:
{
"_id": "..."
"_source": {
...
}
}
名字 | 描述 |
---|---|
交易 | 包含所有交易。 |
块 | 包含所有执行的块。 |
验证器 | 包含按 epoch 和 shard 分组的验证器的公钥。 |
评级 | 包含每个时期的验证者等级。 |
迷你块 | 包含所有执行的 minblocks。 |
回合 | 包含已通过的每一轮的详细信息。 |
账户 | 包含地址余额和修改时的时间戳。 |
会计故事 | 包含有关地址余额的历史信息。 |
收据 | 包含所有生成的收据。 |
屏幕结果 | 包含所有生成的智能合约结果。 |
已记账 | 包含地址的 ESDT 余额。 |
会计历史 | 包含有关地址 ESDT 余额的历史信息。 |
epochinfo | 包含按纪元分组的累积费用和开发者费用。 |
scdeploys | 包含所有已部署智能合约的详细信息。 |
代币 | 包含所有创建的 ESDT 代币。 |
标签 | 包含 NFT 的标签。 |
日志 | 包含由交易和智能合约结果生成的所有日志。 |
委托人 | 包含所有委派者的详细信息。 |
操作 | 包含所有交易和智能合约结果。 |