elasticsearch integration with plone
Project description
Introduction
See the full documentation on readthedocs.
Install elasticsearch
- Less than 5 minutes:
Download & install Java
Download & install Elastic Search
bin/elasticsearch
- Step by Step for Ubuntu:
add-apt-repository ppa:webupd8team/java
apt-get update
apt-get install git curl oracle-java7-installer
curl -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.0.tar.gz
tar xfvz elasticsearch-6.3.0.tar.gz
cd elasticsearch
bin/elasticsearch &
- Does it work?
Do you see the Hudsucker Proxy reference? “You Know, for Search”
- Use Elastic Search in Plone:
Add collective.elasticsearch to eggs & re-run buildout
Restart Plone
Goto Control Panel
Add “Elastic Search” in Add-on Products
Click “Elastic Search” in “Add-on Configuration”
Enable
Click “Convert Catalog”
Click “Rebuild Catalog”
You now have a insanely scalable modern search engine. Now live the life of the Mind!
Overview
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, Plone’s default catalog will be used. This is because Plone’s default catalog is faster on normal queries than using ElasticSearch.
Compatibility
Only tested with Plone 5 with Dexterity types.
It should also work with Plone 4.3 and archetypes.
Deployed with Elasticsearch 6.3.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.
Celery support
This package comes with Celery support where all indexing operations will be pushed into celery to be run asynchronously.
Please see instructions for collective.celery to see how this works.
Running tests
Run elasticsearch for tests to utilize:
- docker run
-e “cluster.name=docker-cluster” -e “ES_JAVA_OPTS=-Xms512m -Xmx512m” -p 9200:9200 docker.elastic.co/elasticsearch/elasticsearch-oss:6.3.0
Then, you can use one of the travis buildout test files:
virtualenv . bin/pip install -r requirements.txt ./bin/buildout ./bin/test
Travis
Contributors
Nathan Van Gheem, vangheem@gmail.com
Changelog
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. Closes: https://github.com/collective/collective.elasticsearch/issues/12 [neilferreira]
1.0.0a1 (2016-02-25)
Initial release
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Hashes for collective.elasticsearch-3.0.5.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 45fe8c5715b3268a97929bfaebb2cabf613e1373c3528f0f96efc918f1e0f8dc |
|
MD5 | 3a200a7265603c6b63690681b977abc3 |
|
BLAKE2b-256 | 0ffd6e4075efb46dab5b1d568c92d78a93fd711f6856b7b1b04ef3a7f093ada5 |