Installing search platform

The GeoNetwork search engine is built on top of Elasticsearch. The platform is used to index record and also to analyze WFS data (See Analyze and visualize data), an Elasticsearch <https://www.elastic.co/products/elasticsearch> instance must be installed next to the catalog.

Manual installation

Download Elasticsearch from https://www.elastic.co/downloads/elasticsearch and unzip the file.

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.2.tar.gz
tar xvfz elasticsearch-7.9.2.tar.gz

Manually start and stop Elasticsearch using:

elasticsearch-7.9.2/bin/elasticsearch

Stop Elasticsearch using

elasticsearch-7.6.2/bin/elasticsearch stop

GeoNetwork will start even if Elasticsearch index is down. A warning will be displayed. Once the Elasticsearch index is up, indices are created if they do not exist.

(Optional) Then create the default index (the application will create them automatically once the index is up and running and if no indices are found):

Customizing index

User may want to customize the index settings for example to change language configuration (see source file es/README.md). Check the configuration file in `$GN_DATA_DIRECTORY/config/index`. To manually remove and recreate the index, use the following:

cd $GN_DATA_DIRECTORY/config/index
curl -X DELETE http://localhost:9200/features
curl -X DELETE http://localhost:9200/records
curl -X DELETE http://localhost:9200/searchlogs

curl -X PUT http://localhost:9200/features -d @features.json
curl -X PUT http://localhost:9200/records -d @records.json
curl -X PUT http://localhost:9200/searchlogs -d @searchlogs.json

Install using Maven

Running from the source code, use Maven to download.

cd es
mvn install -Pes-download
mvn exec:exec -Des-start

To stop Elasticsearch when using Maven, simply stop the process as Elasticsearch is started in foreground mode.

Check installation

Access Elasticsearch admin page from http://localhost:9200/.

Configure connection

Update Elasticsearch connection details in `WEB-INF/config.properties` and restart the application (see source file web/src/main/webResources/WEB-INF/config.properties):

es.protocol=http
es.port=9200
es.host=localhost
es.url=${es.protocol}://${es.host}:${es.port}
es.username=
es.password=

It is not needed nor recommended to open port 9200 to the outside. GeoNetwork is protecting the Elasticsearch instance exposing only the search API and taking care of user privileges.