All versions of this manual
X
 

Search index: Configuring Elasticsearch

Elasticsearch is supported from version 1.4.0 (using the elasticSearch connector) and for version 2.x and version 6.x (using the elasticSearch2 connector).

Elasticsearch 7 is not yet supported in Linkurious Enterprise 2.10.9.

Embedded Elasticsearch

Linkurious Enterprise ships with an embedded Elasticsearch server (version 1.4.5).

ATTENTION: The internal Elasticsearch is not intended to be used for graph databases > 50,000,000 nodes. Though indexation and search performance are ultimately dependent on hardware limitations, it has been configured to prevent horizontal scaling and so is not an efficient choice for large DBs. It is meant instead as a quick indexation strategy for POCs or small deployments.

To use the Linkurious Enterprise embedded Elasticsearch instance, set the following index configurations keys:

  • vendor must be elasticSearch
  • host must be "127.0.0.1"
  • port must be 9201

Example configuration:

{
  "dataSources": [
    {
      "graph": {
        "vendor": "neo4j"
        "url": "http://127.0.0.1:7474"
      },
      "index": {
        "vendor": "elasticSearch",
        "host": "127.0.0.1",
        "port": 9201
      }
    }
  ]
}

Configuring Elasticsearch v1.x

Search connector elasticSearch supports the following options:

  • host (required): Elasticsearch server host
  • port (required): Elasticsearch server port (standard is 9200)
  • https: true to connect to Elasticsearch via HTTPS
  • user: Elasticsearch username (if you are using X-Pack Security, a.k.a ElasticShield)
  • password: Elasticsearch password
  • forceReindex: true to re-index the data-source each time Linkurious Enterprise starts
  • skipEdgeIndexation: true to skip edges indexation (edges won't be searchable)
  • analyzer (default: "standard"): The custom analyzer aimed at analyzing a specific language text. (see available language analysers)
  • dynamicMapping: true to enable number parsing for advanced number search features (range, etc.)

Example configuration:

{
  "dataSources": [
    {
      "graph": {
        "vendor": "neo4j"
        "url": "http://127.0.0.1:7474"
      },
      "index": {
        "vendor": "elasticSearch",
        "host": "192.168.1.80",
        "port": 9200,
        "dynamicMapping": false
      }
    }
  ]
}

Configuring Elasticsearch v2.x

Search connector elasticSearch2 supports the following options:

  • host (required): Elasticsearch server host
  • port (required): Elasticsearch server port (standard is 9200)
  • https: true to connect to Elasticsearch via HTTPS
  • user: Elasticsearch username (if you are using X-Pack Security, a.k.a ElasticShield)
  • password: Elasticsearch password
  • forceReindex: true to re-index the data-source each time Linkurious Enterprise starts
  • skipEdgeIndexation: true to skip edges indexation (edges won't be searchable)
  • analyzer (default: "standard"): The custom analyzer aimed at analyzing a specific language text. (see available language analysers)
  • dynamicMapping: true to enable number parsing for advanced number search features (range, etc.)
  • forceStringMapping: List of fields that are mapped to strings even with dynamicMapping is true
  • caCert: Absolute path to a Certificate Authority certificate in PEM format

Example configuration:

{
  "dataSources": [
    {
      "graph": {
        "vendor": "neo4j"
        "url": "http://127.0.0.1:7474"
      },
      "index": {
        "vendor": "elasticSearch2",
        "host": "192.168.1.122",
        "port": 9200,
        "skipEdgeIndexation": true
      }
    }
  ]
}

Enabling search on numerical and date properties

To enable search on numerical and date properties is necessary to set to true the option dynamicMapping described above. It's also necessary to declare correctly these properties as numbers or dates in the Linkurious Enterprise schema.

Note that, today, only date properties stored in Neo4j as ISO dates are currently searchable.

If you have issue configuring search on numerical or date properties, please get in touch.