ibrows/elastic_search

Name: elastic_search

Owner: PwC Experience Center

Description: Drupal 8 Elasticsearch >=5.0 implementation

Created: 2017-05-24 11:21:30.0

Updated: 2018-05-07 06:16:56.0

Pushed: 2018-02-08 13:58:34.0

Homepage: null

Size: 965

Language: PHP

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

Elastic Search

Codeship Status for ibrows/elastic_search Codacy Badge

INTRODUCTION

The elastic_search module attempts to put elastic search paradigms at the heart of drupal searching. Although Search API is great it is heavily built around Solr concepts and as such it does not translate directly to the way elastic search works. This is an attempt to bring elastic search ideas directly in to drupal.

This means:

* Directly configure and push elastic search mappings from your drupal instance
* Full mapping of entity fields to elastic search field types. With all current elastic search options available
* Uses the elasticsearch/elasticsearch libary
* Module controls the indexes for you, to fully exploit  multilingual analysers and optimize document structure
* Entity references are converted to inline documents (up to depth X) for full searching capability
* Content types can be excluded from the index, or made to be mapped as inner documents / children only
* Easy to extend type mappings to your custom fields by implementing an event subscriber
* Easy to add field data normalization via a plugin

This module is only for mapping and indexing of content with elastic search. You will need additional modules to display result content, such as the soon to be published Elastic Search View . This module could also be integrated with Elastic Search Helper as it decouples the mapping and indexing of documents from their retrieval.

REQUIREMENTS
INSTALLATION
CONFIGURATION

See the /docs folder for the full git book on configuring this module. Or see https://ibrows.github.io/elastic_search/

Related Modules

Elastic Search Views Use elastic search to provide views results data, can be rendered from local db or display elastic json response directly for decoupled FE designs

NOTES

Index documents in bulk and update indexes and mappings in small groups. This seems to produce the best results for cluster memory and to reduce potential timeouts By default index and mapping operations are done 1 at a time and documents are indexed in batches of 100. These settings can be changed on the server config page Because batches involve writing to the database you need to be careful that the total number does not cause an insert query which is too large. 100-200 is optimal

Debug logging in elasticsearch uses print_r and the drupal log reports pages dont want to show this. If you need to debug with this you are best looking directly at the watchdog table or using drupal console

TESTING

elastic_search uses Mockery for test mocking because of a bug in the phpunit version that drupal requires which prevents some classes from being mocked. All elastic_search features are tested using Drupal Module Tester and codeship.

DEVELOPMENT

The dev folder contains a complete docker environment that can be used to develop this module. See the /docs folder for the full git book on developing and extending this module.

We use Github and a gitflow pull request workflow. Each pull request should have a related and cross-linked drupal.org issue.

For the testing to run correctly the following branch naming patterns should be observed:

PR's will not be accepted without passing tests!

https://github.com/ibrows/elastic_search

CONTRIBUTIONS

We welcome contributions in the following areas

Please do not submit code style or readme punctuation updates that add no value to the plugin.

MAINTAINERS

Current Maintainers:

Past contributors:

This project has been sponsored by:


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.