{"id":13529558,"url":"https://github.com/graphaware/neo4j-to-elasticsearch","last_synced_at":"2026-01-14T02:37:00.591Z","repository":{"id":51414427,"uuid":"44475988","full_name":"graphaware/neo4j-to-elasticsearch","owner":"graphaware","description":"GraphAware Framework Module for Integrating Neo4j with Elasticsearch","archived":true,"fork":false,"pushed_at":"2021-05-05T19:30:21.000Z","size":973,"stargazers_count":265,"open_issues_count":2,"forks_count":57,"subscribers_count":38,"default_branch":"master","last_synced_at":"2025-09-30T10:36:57.985Z","etag":null,"topics":["elasticsearch","java","neo4j","neo4j-graphaware-framework"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/graphaware.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-10-18T11:43:48.000Z","updated_at":"2025-09-23T14:26:11.000Z","dependencies_parsed_at":"2022-09-13T08:41:30.954Z","dependency_job_id":null,"html_url":"https://github.com/graphaware/neo4j-to-elasticsearch","commit_stats":null,"previous_names":[],"tags_count":53,"template":false,"template_full_name":null,"purl":"pkg:github/graphaware/neo4j-to-elasticsearch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/graphaware%2Fneo4j-to-elasticsearch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/graphaware%2Fneo4j-to-elasticsearch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/graphaware%2Fneo4j-to-elasticsearch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/graphaware%2Fneo4j-to-elasticsearch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/graphaware","download_url":"https://codeload.github.com/graphaware/neo4j-to-elasticsearch/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/graphaware%2Fneo4j-to-elasticsearch/sbom","scorecard":{"id":443744,"data":{"date":"2025-08-11","repo":{"name":"github.com/graphaware/neo4j-to-elasticsearch","commit":"2751ae76ce240795c62cf68086b6a4439c6112d5"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.3,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":0,"reason":"license file not detected","details":["Warn: project does not have a license file"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":0,"reason":"91 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-h46c-h94j-95f3","Warn: Project is vulnerable to: GHSA-wf8f-6423-gfxg","Warn: Project is vulnerable to: GHSA-288c-cq4h-88gq","Warn: Project is vulnerable to: GHSA-4gq5-ch57-c2mg","Warn: Project is vulnerable to: GHSA-4w82-r329-3q67","Warn: Project is vulnerable to: GHSA-57j2-w4cx-62h2","Warn: Project is vulnerable to: GHSA-5949-rw7g-wx7w","Warn: Project is vulnerable to: GHSA-5r5r-6hpj-8gg9","Warn: Project is vulnerable to: GHSA-5ww9-j83m-q7qx","Warn: Project is vulnerable to: GHSA-645p-88qh-w398","Warn: Project is vulnerable to: GHSA-6fpp-rgj9-8rwc","Warn: Project is vulnerable to: GHSA-85cw-hj65-qqv9","Warn: Project is vulnerable to: GHSA-89qr-369f-5m5x","Warn: Project is vulnerable to: GHSA-8c4j-34r4-xr8g","Warn: Project is vulnerable to: GHSA-8w26-6f25-cm9x","Warn: Project is vulnerable to: GHSA-9gph-22xh-8x98","Warn: Project is vulnerable to: GHSA-9m6f-7xcq-8vf8","Warn: Project is vulnerable to: GHSA-c8hm-7hpq-7jhg","Warn: Project is vulnerable to: GHSA-cf6r-3wgc-h863","Warn: Project is vulnerable to: GHSA-cggj-fvv3-cqwv","Warn: Project is vulnerable to: GHSA-cjjf-94ff-43w7","Warn: Project is vulnerable to: GHSA-cmfg-87vq-g5g4","Warn: Project is vulnerable to: GHSA-cvm9-fjm9-3572","Warn: Project is vulnerable to: GHSA-f3j5-rmmp-3fc5","Warn: Project is vulnerable to: GHSA-f9xh-2qgp-cq57","Warn: Project is vulnerable to: GHSA-fmmc-742q-jg75","Warn: Project is vulnerable to: GHSA-fqwf-pjwf-7vqv","Warn: Project is vulnerable to: GHSA-gjmw-vf9h-g25v","Warn: Project is vulnerable to: GHSA-gwp4-hfv6-p7hw","Warn: Project is vulnerable to: GHSA-gww7-p5w4-wrfv","Warn: Project is vulnerable to: GHSA-h3cw-g4mq-c5x2","Warn: Project is vulnerable to: GHSA-h592-38cm-4ggp","Warn: Project is vulnerable to: GHSA-h822-r4r5-v8jg","Warn: Project is vulnerable to: GHSA-jjjh-jjxp-wpff","Warn: Project is vulnerable to: GHSA-m6x4-97wx-4q27","Warn: Project is vulnerable to: GHSA-mph4-vhrx-mv67","Warn: Project is vulnerable to: GHSA-mx7p-6679-8g3q","Warn: Project is vulnerable to: GHSA-p43x-xfjf-5jhr","Warn: Project is vulnerable to: GHSA-q93h-jc49-78gg","Warn: Project is vulnerable to: GHSA-qjw2-hr98-qgfh","Warn: Project is vulnerable to: GHSA-qr7j-h6gg-jmgc","Warn: Project is vulnerable to: GHSA-qxxx-2pp7-5hmx","Warn: Project is vulnerable to: GHSA-r3gr-cxrf-hg25","Warn: Project is vulnerable to: GHSA-r695-7vr9-jgc2","Warn: Project is vulnerable to: GHSA-rfx6-vp9g-rh7v","Warn: Project is vulnerable to: GHSA-rgv9-q543-rqg4","Warn: Project is vulnerable to: GHSA-rpr3-cw39-3pxh","Warn: Project is vulnerable to: GHSA-v585-23hc-c647","Warn: Project is vulnerable to: GHSA-vfqx-33qm-g869","Warn: Project is vulnerable to: GHSA-w3f4-3q6j-rh82","Warn: Project is vulnerable to: GHSA-wh8g-3j2c-rqj5","Warn: Project is vulnerable to: GHSA-4jrv-ppp4-jm57","Warn: Project is vulnerable to: GHSA-5mg8-w23w-74h3","Warn: Project is vulnerable to: GHSA-7g45-4rm6-3mm3","Warn: Project is vulnerable to: GHSA-mvr2-9pj6-7w5j","Warn: Project is vulnerable to: GHSA-4g9r-vxhx-9pgx","Warn: Project is vulnerable to: GHSA-7hfm-57qf-j43q","Warn: Project is vulnerable to: GHSA-crv7-7245-f45f","Warn: Project is vulnerable to: GHSA-mc84-pj99-q6hh","Warn: Project is vulnerable to: GHSA-xqfj-vm6h-2x34","Warn: Project is vulnerable to: GHSA-j288-q9x7-2f5v","Warn: Project is vulnerable to: GHSA-7r82-7xv7-xcpj","Warn: Project is vulnerable to: GHSA-4cx2-fc23-5wg6","Warn: Project is vulnerable to: GHSA-6xx3-rg99-gc3p","Warn: Project is vulnerable to: GHSA-72m5-fvvv-55m6","Warn: Project is vulnerable to: GHSA-8xfc-gm6g-vgpv","Warn: Project is vulnerable to: GHSA-hr8g-6v94-x4m9","Warn: Project is vulnerable to: GHSA-v435-xc8x-wvr9","Warn: Project is vulnerable to: GHSA-wjxj-5m7g-mg7q","Warn: Project is vulnerable to: GHSA-36p3-wjmg-h94x","Warn: Project is vulnerable to: GHSA-hh26-6xwr-ggv7","Warn: Project is vulnerable to: GHSA-4gc7-5j7h-4qph","Warn: Project is vulnerable to: GHSA-4wp7-92pw-q264","Warn: Project is vulnerable to: GHSA-g5mm-vmx4-3rg7","Warn: Project is vulnerable to: GHSA-4487-x383-qpph","Warn: Project is vulnerable to: GHSA-f26x-pr96-vw86","Warn: Project is vulnerable to: GHSA-ffvq-7w96-97p7","Warn: Project is vulnerable to: GHSA-g8hw-794c-4j9g","Warn: Project is vulnerable to: GHSA-rcpf-vj53-7h2m","Warn: Project is vulnerable to: GHSA-v596-fwhq-8x48","Warn: Project is vulnerable to: GHSA-558x-2xjg-6232","Warn: Project is vulnerable to: GHSA-564r-hj7v-mcr5","Warn: Project is vulnerable to: GHSA-9cmq-m9j5-mvww","Warn: Project is vulnerable to: GHSA-wxqc-pxw9-g2p8","Warn: Project is vulnerable to: GHSA-2rmj-mq67-h97g","Warn: Project is vulnerable to: GHSA-2wrp-6fg6-hmc5","Warn: Project is vulnerable to: GHSA-4wrc-f8pq-fpqp","Warn: Project is vulnerable to: GHSA-9gcm-f4x3-8jpw","Warn: Project is vulnerable to: GHSA-ccgv-vj62-xf9h","Warn: Project is vulnerable to: GHSA-hgjh-9rj2-g67j","Warn: Project is vulnerable to: GHSA-g5vr-rgqm-vf78"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-19T06:11:41.755Z","repository_id":51414427,"created_at":"2025-08-19T06:11:41.755Z","updated_at":"2025-08-19T06:11:41.755Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408711,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["elasticsearch","java","neo4j","neo4j-graphaware-framework"],"created_at":"2024-08-01T07:00:37.412Z","updated_at":"2026-01-14T02:37:00.538Z","avatar_url":"https://github.com/graphaware.png","language":"Java","funding_links":[],"categories":["Full-text search","REST API"],"sub_categories":["REST API","Other"],"readme":"GraphAware Neo4j Elasticsearch Integration (Neo4j Module) - RETIRED\n=========================================================\n\n## GraphAware Neo4j Elasticsearch Integration Has Been Retired\nAs of May 2021, this [repository has been retired](https://graphaware.com/framework/2021/05/06/from-graphaware-framework-to-graphaware-hume.html).\n\nGraphAware Elasticsearch Integration is an enterprise-grade bi-directional integration between Neo4j and Elasticsearch.\nIt consists of two independent modules plus a test suite. Both modules can be used independently or together to achieve\nfull integration.\n\nThe first module (this project) is a plugin to Neo4j (more precisely, a [GraphAware Transaction-Driven Runtime Module](https://github.com/graphaware/neo4j-framework/tree/master/runtime#graphaware-runtime)),\nwhich can be configured to transparently and asynchronously replicate data from Neo4j to Elasticsearch. This module is now\nproduction-ready and officially supported by GraphAware for  \u003ca href=\"http://graphaware.com/enterprise/\" target=\"_blank\"\u003eGraphAware Enterprise\u003c/a\u003e subscribers.\n\nThe \u003ca href=\"https://github.com/graphaware/graph-aided-search\" target=\"_blank\"\u003esecond module (a.k.a. Graph-Aided Search)\u003c/a\u003e is a plugin to Elasticsearch that can consult the Neo4j database during an Elasticsearch query to enrich\nthe result (boost the score) by results that are more efficiently calculated in a graph database, e.g. recommendations.\n\n## Community vs Enterprise\n\nThis open-source (GPL) version of the module is compatible with GraphAware Framework Community (GPL), which in turn \nis compatible with Neo4j Community Edition (GPL) only. It *will not work* with Neo4j Enterprise Edition, which is a \nproprietary and commercial software product of Neo4j, Inc..\n\nGraphAware offers an Enterprise version of the GraphAware Framework to licensed users of Neo4j Enterprise Edition.\nPlease [get in touch](mailto:info@graphaware.com) to receive access.\n\n# Neo4j -\u003e Elasticsearch\n\n## Getting the Software\n\n### Server Mode\n\nWhen using Neo4j in the \u003ca href=\"http://docs.neo4j.org/chunked/stable/server-installation.html\" target=\"_blank\"\u003estandalone server\u003c/a\u003e mode,\nyou will need three (3) .jar files (all of which you can \u003ca href=\"http://graphaware.com/downloads/\" target=\"_blank\"\u003edownload here\u003c/a\u003e)\ndropped into the `plugins` directory of your Neo4j installation:\n\n*  \u003ca href=\"https://github.com/graphaware/neo4j-framework\" target=\"_blank\"\u003eGraphAware Neo4j Framework\u003c/a\u003e\n*  \u003ca href=\"https://github.com/graphaware/neo4j-uuid\" target=\"_blank\"\u003eGraphAware Neo4j UUID\u003c/a\u003e (only required of you are using UUIDs)\n*  \u003ca href=\"https://github.com/graphaware/neo4j-to-elasticsearch\" target=\"_blank\"\u003eGraphAware Neo4j Elasticsearch Integration\u003c/a\u003e (this project)\n\nAfter changing a few lines of config (read on) and restarting Neo4j, the module will do its magic.\n\n### Embedded Mode / Java Development\n\nJava developers that use Neo4j in \u003ca href=\"http://docs.neo4j.org/chunked/stable/tutorials-java-embedded.html\" target=\"_blank\"\u003eembedded mode\u003c/a\u003e\nand those developing Neo4j \u003ca href=\"http://docs.neo4j.org/chunked/stable/server-plugins.html\" target=\"_blank\"\u003eserver plugins\u003c/a\u003e,\n\u003ca href=\"http://docs.neo4j.org/chunked/stable/server-unmanaged-extensions.html\" target=\"_blank\"\u003eunmanaged extensions\u003c/a\u003e,\nGraphAware Runtime Modules, or Spring MVC Controllers can include use the module as a dependency for their Java project.\n\n### Releases\n\nReleases are synced to \u003ca href=\"http://search.maven.org/#search%7Cga%7C1%7Ca%3A%22uuid%22\" target=\"_blank\"\u003eMaven Central repository\u003c/a\u003e. When using Maven for dependency management, include the following dependency in your pom.xml and change the version to the correct one.\n\n    \u003cdependencies\u003e\n        ...\n        \u003cdependency\u003e\n            \u003cgroupId\u003ecom.graphaware.integration.es\u003c/groupId\u003e\n            \u003c!-- this will be com.graphaware.neo4j in the next release --\u003e\n            \u003cartifactId\u003eneo4j-to-elasticsearch\u003c/artifactId\u003e\n            \u003cversion\u003eA.B.C.D.E\u003c/version\u003e\n        \u003c/dependency\u003e\n        ...\n    \u003c/dependencies\u003e\n\n#### Snapshots\n\nTo use the latest development version, just clone this repository, run `mvn clean install` and change the version in the\ndependency above to A.B.C.D.E-SNAPSHOT.\n\n#### Note on Versioning Scheme\n\nThe version number has two parts. The first four numbers indicate compatibility with Neo4j GraphAware Framework.\n The last number is the version of the Elasticsearch Integration library. For example, version 2.3.2.37.1 is version 1 of the Elasticsearch Integration library\n compatible with GraphAware Neo4j Framework 2.3.2.37 (and thus Neo4j 2.3.2).\n\n### Note on UUID\n\nIt is a very bad practice to expose internal Neo4j node IDs to external systems. The reason for that is that these IDs\nare not guaranteed to be stable and are re-used when nodes are deleted. For this reason, unless you have your own unique\nidentifier for your nodes already, we highly recommend using \u003ca href=\"https://github.com/graphaware/neo4j-uuid\" target=\"_blank\"\u003eGraphAware Neo4j UUID Module\u003c/a\u003e\nin conjunction with the Elasticsearch Integration Library. The rest of this manual will show you how to do that.\n\nConfiguring things as described below means all (or a selected subset of) your nodes will automatically be assigned\nan immutable uuid property, which will be indexed in Neo4j and used in Elasticsearch as the key for your indexed nodes\n(a.k.a. documents). When Elasticsearch returns a result, it will be the UUID that you will use to retrieve the Node\nfrom Neo4j.\n\n## Setup and Configuration\n\n### Server Mode\n\nEdit `neo4j.conf` to register the required modules:\n\n```\n\n# This setting should only be set once for registering the framework and all the used submodules\ndbms.unmanaged_extension_classes=com.graphaware.server=/graphaware\n\ncom.graphaware.runtime.enabled=true\n\n#UIDM becomes the module ID:\ncom.graphaware.module.UIDM.1=com.graphaware.module.uuid.UuidBootstrapper\n\n#optional, default is \"uuid\". (only if using the UUID module)\ncom.graphaware.module.UIDM.uuidProperty=uuid\n\n#optional, default is all nodes:\ncom.graphaware.module.UIDM.node=hasLabel('Label1') || hasLabel('Label2')\n\n#optional, default is uuidIndex\ncom.graphaware.module.UIDM.uuidIndex=uuidIndex\n\n#prevent the whole db to be assigned a new uuid if the uuid module is settle up together with neo4j2es\ncom.graphaware.module.UIDM.initializeUntil=0\n\n#ES becomes the module ID:\ncom.graphaware.module.ES.2=com.graphaware.module.es.ElasticSearchModuleBootstrapper\n\n#URI of Elasticsearch\ncom.graphaware.module.ES.uri=localhost\n\n#Port of Elasticsearch\ncom.graphaware.module.ES.port=9201\n\n#optional, protocol of Elasticsearch connection, defaults to http\ncom.graphaware.module.ES.protocol=http\n\n#optional, Elasticsearch index name, default is neo4j-index\ncom.graphaware.module.ES.index=neo4j-index\n\n#optional, node property key of a propery that is used as unique identifier of the node. Must be the same as com.graphaware.module.UIDM.uuidProperty (only if using UUID module), defaults to uuid\n#use \"ID()\" to use native Neo4j IDs as Elasticsearch IDs (not recommended)\ncom.graphaware.module.ES.keyProperty=uuid\n\n#optional, whether to retry if a replication fails, defaults to false\ncom.graphaware.module.ES.retryOnError=false\n\n#optional, size of the in-memory queue that queues up operations to be synchronised to Elasticsearch, defaults to 10000\ncom.graphaware.module.ES.queueSize=10000\n\n#optional, size of the batch size to use during re-initialization, defaults to 1000\ncom.graphaware.module.ES.reindexBatchSize=2000\n\n#optional, specify which nodes to index in Elasticsearch, defaults to all nodes\ncom.graphaware.module.ES.node=hasLabel('Person')\n\n#optional, specify which node properties to index in Elasticsearch, defaults to all properties\ncom.graphaware.module.ES.node.property=key != 'age'\n\n#optional, specify whether to send updates to Elasticsearch in bulk, defaults to true (highly recommended)\ncom.graphaware.module.ES.bulk=true\n\n#optional, read explanation below, defaults to 0\ncom.graphaware.module.ES.initializeUntil=0\n\n#optional, whether or not the reindexation process (when db start) should be made in asynchronous mode\n#default is \"false\" and the db will not be available until completed\n#com.graphaware.module.ES.asyncIndexation=true\n\n```\n\nFor explanation of the UUID configurations, please see the [UUID Module docs](https://github.com/graphaware/neo4j-uuid).\n\nFor explanation of the syntax used in the configuration, refer to the [Inclusion Policies](https://github.com/graphaware/neo4j-framework/tree/master/common#inclusion-policies).\n\nThe Elasticsearch Integration configuration is described in the inline comments above. The only property that needs a little\nmore explanation is `com.graphaware.module.ES.initializeUntil`:\n\nEvery GraphAware Framework Module has methods (`initialize()` and `reinitialize()`) that provide a mechanism to get the\nworld into a state equivalent to a situation in which the module has been running since the database was empty.\nThese methods kick in in one of the following scenarios:\n\n* The database is not empty when the module has been registered for the first time (GraphAware Framework used on an existing database)\n* The configuration of the module has changed since the last time it was run\n* Some failure occurred that causes the Framework to think it should fix things.\n\nWe've decided that we should not shoot the whole database at Elasticsearch in one of these scenarios automatically, because\nit could well be quite large. Therefore, in order to trigger (re-)indexing, i.e. sending every node that should be indexed\nto Elasticsearch upon Neo4j restart, you have to manually intervene.\n\nThe way you intervene is set the com.graphaware.module.ES.initializeUntil to a number slightly higher than a Java call to `System.currentTimeInMillis()`\nwould return when the module is starting. This way, the database will be (re-)indexed once, not with every following restart.\nIn other words, re-indexing will happen iff `System.currentTimeInMillis() \u003c com.graphaware.module.ES.initializeUntil`.\nIf you're not sure what all of this means or don't know how to find the right number to set this value to, you're probably\nbest off leaving it alone or getting in touch for some (paid) support.\n\n\n#### ElasticSearch Shield Support\n\nIf Shield plugin is installed and enabled on Elasticsearch node, it is possible to add authentication parameters in the configuration.\nHere an example:\n\n```\n#optional, specify the Shield user\ncom.graphaware.module.ES.authUser=neo4j_user\n\n#optional, specify the Shield password\ncom.graphaware.module.ES.authPassword=123456\n```\n\nBoth of them MUST be specified to enabling Authentication. The user must be able to perform writes on the elasticsearch instance.\n\n### Embedded Mode / Java Development\n\nTo use the ElasticSearch Integration Module programmatically, register the module like this\n\n```java\nGraphAwareRuntime runtime = GraphAwareRuntimeFactory.createRuntime(database); //where database is an instance of GraphDatabaseService\nruntime.registerModule(new UuidModule(\"UUID\", UuidConfiguration.defaultConfiguration(), database));\n\nconfiguration = ElasticSearchConfiguration.defaultConfiguration(HOST, PORT);\nruntime.registerModule(new ElasticSearchModule(\"ES\", new ElasticSearchWriter(configuration), configuration));\n\nruntime.start();\n```\n\nAlternatively:\n```java\n GraphDatabaseService database = new GraphDatabaseFactory().newEmbeddedDatabaseBuilder(pathToDb)\n    .loadPropertiesFromFile(this.getClass().getClassLoader().getResource(\"neo4j.properties\").getPath())\n    .newGraphDatabase();\n\n //make sure neo4j.properties contain the lines mentioned in previous section\n```\n\n## Usage\n\nApart from the configuration described above, the GraphAware ElasticSearch Integration Module requires nothing else to function.\nIt will replicate transactions asynchronously to ElasticSearch.\n\n### Cypher Procedures\n\nThis module provides a set of Cypher procedures that allows communicate with Elasticsearch using the Cypher query language.\nThese are the available procedures:\n\n#### Searching for nodes or relationships\n\nThis procedures allows to perform search queries on indexed nodes or relationships and return them for further use in the cypher query.\nExample of usage:\n\n```\nCALL ga.es.queryNode('{\\\"query\\\":{\\\"match\\\":{\\\"name\\\":\\\"alessandro\\\"}}}') YIELD node, score RETURN node, score\"\n```\n\nTogether with the nodes also the related score is returned.\n\nAny search query can be submitted through the procedure, it will be performed on the index configured\nfor replication on Elasticsearch.\n\nSimilar procedures are `queryNodeRaw` and `queryRelationshipRaw` procedures. These procedures are similar to the `queryNode` and `queryRelationship` (they accept the same parameters) but they return a JSON-encoded value of the node or relationship as returned by Ealsticsearch.\nExample:\n```\nCALL ga.es.queryRelationshipRaw('{\\\"query\\\":{\\\"match\\\":{\\\"city\\\":\\\"paris\\\"}}}') YIELD json, score RETURN json, score\"\n```\n\n#### Monitoring the status of the reindexing process\n\nDepending on your configuration, the module can be in `initialization` mode when starting, processing a complete reindexing\nof the Neo4j graph database content (in accordance with your configuration settings)\n\nYou can monitor the status of the `init` mode:\n```\nCALL ga.es.initialized() YIELD status RETURN status\n```\n\nReturns `true` or `false`\n\n#### Getting the current node or relationship mapping\n\nYou can retrieve the current node or relationship mapping from Elasticsearch using the following procedure:\n\n```\nCALL ga.es.nodeMapping() YIELD json as mapping RETURN mapping\n```\nor\n```\nCALL ga.es.relationshipMapping() YIELD json as mapping RETURN mapping\n```\n\nThis will return a JSON string containing the mapping returned by Elasticsearch's [Get Mapping API](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-get-mapping.html).\nThe returned JSON string needs to be decoded using JSON parsing library.\n\n#### Getting Elasticsearch information\n\n```\nCALL ga.es.info() YIELD json as info return info\n```\n\nThis will return a JSON string containing Elasticsearch server information as returned bas the Basic Status API.\nThe returned JSON string needs to be decoded using JSON parsing library.\nAn example of parsed result:\n```\n{\n  \"name\" : \"Sharon Friedlander\",\n  \"cluster_name\" : \"elasticsearch\",\n  \"version\" : {\n    \"number\" : \"2.4.0\",\n    \"build_hash\" : \"ce9f0c7394dee074091dd1bc4e9469251181fc55\",\n    \"build_timestamp\" : \"2016-08-29T09:14:17Z\",\n    \"build_snapshot\" : false,\n    \"lucene_version\" : \"5.5.2\"\n  },\n  \"tagline\" : \"You Know, for Search\"\n}\n```\n\n### Version of ElasticSearch\n\nThis module has been tested with ElasticSearch 2.3.0+.\n\nLicense\n-------\n\nCopyright (c) 2013-2020 GraphAware\n\nGraphAware is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License\nas published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied\nwarranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\nYou should have received a copy of the GNU General Public License along with this program.\nIf not, see \u003chttp://www.gnu.org/licenses/\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgraphaware%2Fneo4j-to-elasticsearch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgraphaware%2Fneo4j-to-elasticsearch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgraphaware%2Fneo4j-to-elasticsearch/lists"}