Nodeos plugin for archiving blockchain data into Elasticsearch, inspired by mongo_db_plugin.
elasticsearh_plugin
rely on EOSLaoMao/elasticlient
git clone https://github.com/WLBF/elasticlient.git
cd elasticlient
git submodule update --init --recursive
cmake -DBUILD_ELASTICLIENT_TESTS=NO -DBUILD_ELASTICLIENT_EXAMPLE=NO
make
sudo make install
# copy cpr library manually
cp -r "external/cpr/include/cpr" "/usr/local/include/cpr"
cp "lib/libcpr.so" "/usr/local/lib/libcpr.so"
- Get
elasticsearch_plugin
source code.
git clone https://github.com/EOSLaoMao/elasticsearch_plugin.git plugins/elasticsearch_plugin
- Add subdirectory to
plugins/CMakeLists.txt
.
...
add_subdirectory(mongo_db_plugin)
add_subdirectory(login_plugin)
add_subdirectory(login_plugin)
add_subdirectory(elasticsearch_plugin) # add this line.
...
- Add following line to
programs/nodeos/CMakeList.txt
.
target_link_libraries(
...
# add this line.
PRIVATE -Wl,${whole_archive_flag} elasticsearch_plugin -Wl,${no_whole_archive_flag}
...
The usage of elasticsearch_plugin
is similar to mongo_db_plugin.
Config Options for eosio::elasticsearch_plugin:
-q [ --elastic-queue-size ] arg (=512) The target queue size between nodeos
and elasticsearch plugin thread.
--elastic-abi-cache-size arg (=2048) The maximum size of the abi cache for
serializing data.
--elastic-index-wipe Required with --replay-blockchain,
--hard-replay-blockchain, or
--delete-all-blocks to delete
elasticsearch index.This option
required to prevent accidental wipe of
index.
--elastic-block-start arg (=0) If specified then only abi data pushed
to elasticsearch until specified block
is reached.
-u [ --elastic-url ] arg elasticsearch URL connection string If
not specified then plugin is disabled.
--elastic-user arg elasticsearch user.
--elastic-password arg elasticsearch password.
--elastic-store-blocks arg (=1) Enables storing blocks in
elasticsearch.
--elastic-store-block-states arg (=1) Enables storing block state in
elasticsearch.
--elastic-store-transactions arg (=1) Enables storing transactions in
elasticsearch.
--elastic-store-transaction-traces arg (=1) Enables storing transaction traces in
elasticsearch.
--elastic-store-action-traces arg (=1) Enables storing action traces in
elasticsearch.
--elasticsearch-filter-on arg elasticsearch: Track actions which
match receiver:action:actor. Actor may
be blank to include all. Receiver and
Action may not be blank. Default is *
include everything.
--elasticsearch-filter-out arg elasticsearch: Do not track actions
which match receiver:action:actor.
Action and Actor both blank excludes
all from reciever. Actor blank excludes
all from reciever:action. Receiver may
not be blank.