Skip to main content

collective.elasticsearch

PyPI PyPI - Python Version PyPI - Wheel PyPI - License PyPI - Status

PyPI - Plone Versions

Code analysis checks Tests Code Style

GitHub contributors GitHub Repo stars

Introduction

This package aims to index all fields the portal_catalog indexes and allows you to delete the Title, Description and SearchableText indexes which can provide significant improvement to performance and RAM usage.

Then, ElasticSearch queries are ONLY used when Title, Description and SearchableText text are in the query. Otherwise, the plone's default catalog will be used. This is because Plone's default catalog is faster on normal queries than using ElasticSearch.

Install Elastic Search

For a comprehensive documentation about the different options of installing Elastic Search, please read their documentation.

A quick start, using Docker would be:

docker run \
		-e "discovery.type=single-node" \
		-e "cluster.name=docker-cluster" \
		-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
		-p 9200:9200 \
		elasticsearch:7.7.0

Test the installation

Run, on your shell:

curl http://localhost:9200/

And you should see the Hudsucker Proxy reference? "You Know, for Search"

Install collective.elasticsearch

First, add collective.elasticsearch to your package dependencies, or install it with pip (the same one used by your Plone installation):

pip install collective.elasticsearch

Restart Plone, and go to the Control Panel, click in Add-ons, and select Elastic Search.

Now, go to Add-on Configuration and:

  • Check "Enable"
  • Click "Convert Catalog"
  • Click "Rebuild Catalog"

You now have a insanely scalable modern search engine. Now live the life of the Mind!

Compatibility

  • Python 3
  • Plone 5.2 and above
  • Tested with Elastic Search 7.7.0

State

Support for all index column types is done EXCEPT for the DateRecurringIndex index column type. If you are doing a full text search along with a query that contains a DateRecurringIndex column, it will not work.

Developing this package

Create the virtual enviroment and install all dependencies:

make build

Start Plone in foreground:

make start

Running tests

make tests

Formatting the codebase

make format

Linting the codebase

make lint

License

The project is licensed under the GPLv2.

Changelog

5.0.0 (2022-10-11)

  • Rename master branch to main @ericof

  • Drop support for Python 3.7 when using Plone 6.0 @ericof

  • Add support to plone.restapi and Volto @ericof

5.0.0a2 (2022-09-23)

  • Implement IIndexQueueProcessor support @ericof

  • Refactor ElasticSearchCatalog methods into ElasticSearchManager object @ericof

  • Breaking: Remove collective.elasticsearch.es @ericof

  • Breaking: Remove collective.elasticsearch.hooks @ericof

  • Refactor moveObjectsByDelta to reduce the number of calls to ElasticSearch @ericof

  • Reindex operations update on the catalog send only updated index to ElasticSearch @ericof

  • Remove collective.celery support (as it is not Python-3 compatible yet) @ericof

5.0.0a1 (2022-09-14)

  • Refactor hook.index_batch to reduce the number of calls do Elastic Search @ericof

  • Implement plone/code-analysis-action @ericof

  • Add support to Plone 6.0 @ericof

  • Support Python 3.7, 3.8, 3.9 and 3.10 @ericof

  • Drop support to Plone versions 4.3, 5.0 and 5.1 @ericof, @andreclimaco

  • Drop support to Python 2.7 @ericof, @andreclimaco

4.0.0 (2021-04-28)

  • BREAKING: Make changes for ES 7.x @bduncan137

  • Slow down tests to allow them to complete correctly @bduncan137

3.0.5 (2021-04-28)

  • Issue #76 In 5.1+ we want to patch _unindexObject not unindexObject @ewohnlich

  • Explicit error logging added, if ES bulk action for indexing failed. @nazrulworld

  • Fix commit hook bug when content has been moved @instification

3.0.4 (2019-08-21)

  • Issue #63 Now ensuring unicode value would for both python2 and python3 case. @nazrulworld

  • Now possible to search by other than Title, Description and SearchableText indexes. @nazrulworld

3.0.3 (2019-03-12)

  • Add missing import logger @nazrulworld

3.0.2 (2019-01-31)

  • Fix Zope DateTime convert to also handle the datetime.date type @ewohnlich

3.0.1 (2019-01-28)

  • Fix sortable_title search issue @ewohnlich

3.0.0 (2019-01-28)

  • Fix date queries to work with min:max as well as minmax @vangheem

  • Fix sort order parsing and implementation @vangheem

  • Handle upgrades with missing es_only_indexes properly @vangheem

  • Add IReindexActive to request as a flag for other code @lucid-0

2.0.2 (2018-11-27)

  • Python 3 Support @vangheem

  • Support ES 6 @lucid-0

  • Fix error causing "Server Status" on @@elastic-controlpanel to be empty. @fulv

2.0.1 (2018-01-05)

  • Prevent critical error when by chance query value is None. @thomasdesvenain

  • Minor code cleanup: readability, pep8, 80 cols, zca decorators. @jensens

  • Fix date criteria: 'minmax' instead of 'min:max' + string to date conversion @ebrehault

2.0.0a6 (2017-03-29)

  • Gracefully handle upgrades in the settings interface so it doesn't break for people upgrading. @vangheem

2.0.0a5 (2017-03-29)

  • Running indexing as admin as it is possible to initiate reindex or index on an object that you do not have permissions for @vangheem

2.0.0a4 (2017-03-27)

  • released

2.0.0a3 (2017-03-27)

  • Add a method to set the body of the request during index creation. @Gagaro

  • Fixed get brain in lazy list with negative indexes. @thomasdesvenain

  • The list of indexes that forces es search is configurable. @thomasdesvenain

  • Works under Plone 4.3. @thomasdesvenain

  • Works with archetypes contents. @thomasdesvenain

2.0.0a2 (2016-07-19)

  • We can pass a custom results factory and custom query parameters to IElasticSearchCatalog.search() method. So we can use it as a public interface for custom needs. @thomasdesvenain

  • Prevent from unindex before reindex when uid is unchanged, for instance at rename. Use a set for to-remove list. @thomasdesvenain

  • Fix indexing when removing the Title and Description indexes from Plone @vangheem

2.0.0a1 (2016-06-06)

  • upgrade to elasticsearch 2.x @vangheem

1.0.1a4 (2016-05-22)

  • provide better search query @vangheem

1.0.1a3 (2016-03-22)

  • make sure to get alias definition right @vangheem

1.0.1a2 (2016-03-18)

  • create index as an alias so you can potentially work on an existing alias without needing downtime @vangheem

1.0.1a1 (2016-02-25)

  • change default sorting to descending. Issue #12 @neilferreira

1.0.0a1 (2016-02-25)

  • Initial release

Release files for collective.elasticsearch 5.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for collective.elasticsearch 5.0.0
File Size Uploaded
collective.elasticsearch-5.0.0.tar.gz 51.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for collective.elasticsearch 5.0.0
File Interpreter ABI Platform
collective.elasticsearch-5.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 97.8 kB

Release files / collective.elasticsearch-5.0.0.tar.gz

Download URL collective.elasticsearch-5.0.0.tar.gz
Size 51.5 kB
Tags Source
SHA-256 checksum
How to use checksums
a1f0b5ae2a78102c8f7be2835747e1a52dea43b093a19033188ea85acfb88987
BLAKE2b-256 checksum
How to use checksums
0ebe042578f1187ea047099a4059dbfe4f60bcdc59a3785dcc748384fc1c6c3d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.8.12

Release files / collective.elasticsearch-5.0.0-py3-none-any.whl

Download URL collective.elasticsearch-5.0.0-py3-none-any.whl
Size 46.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6293ba2bea1d7fcf30125993184e190c2524cfefb455c77219f530f584947980
BLAKE2b-256 checksum
How to use checksums
8d64113d912e55d05ef01fe74f5ebbf23848c6928dd809605c1d1b73136e5456
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.8.12
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page