Elasticsearch data layer for eve rest framework
Project description
Eve-Elastic
===========
.. image:: https://travis-ci.org/petrjasek/eve-elastic.png?branch=master
:target: https://travis-ci.org/petrjasek/eve-elastic
Eve-Elastic is `elasticsearch <http://www.elasticsearch.org>`_ data layer for `eve REST framework <http://python-eve.org>`_.
Features
--------
- fulltext search
- filtering via elasticsearch filter dsl
- facets support
- elasticsearch mapping generator for schema
License
-------
Eve-Elastic is `GPLv3 <http://www.gnu.org/licenses/gpl-3.0.txt>`_ licensed.
Install
-------
.. code-block:: bash
$ pip install Eve-Elastic
Usage
-----
Set elastic as your eve data layer.
.. code-block:: python
import eve
form eve_elastic import Elastic
app = eve.Eve(data=Elastic)
Config
------
There are 2 options for Eve-Elastic taken from ``app.config``:
- ``ELASTICSEARCH_URL`` (default: ``'http://localhost:9200/'``)
- ``ELASTICSEARCH_INDEX`` - (default: ``'eve'``)
Query params
------------
Eve-Elastic supports eve like queries via ``where`` param which work as `term <http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-term-filter.html>`_ filter.
On top of this, there is a predefined `query_string <http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html>`_ query which does fulltext search.
.. code-block:: bash
$ curl http://localhost:5000/items?q=foo&df=name
- ``q`` - query (default: ``*``)
- ``df`` - default field (default: ``_all``)
Filter DSL
~~~~~~~~~~
For more sophisticated filtering, you can use ``filter`` query param which will be used as filter for the query, using elastic `filter dsl <http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-filters.html>`_.
Facets
------
To add a facets support for specific resource, add ``facets`` into its ``datasource``:
.. code-block:: python
DOMAIN = {
'contacts': {
'datasource':
'facets': {
'urgency': {'terms': {'field': 'urgency'}},
'versioncreated': {'date_histogram': {'field': 'versioncreated', 'interval': 'hour'}}
}
}
}
You will find `more info about facets in elasticsearch docs <http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-facets.html>`_.
.. :changelog:
Changelog
---------
0.1.3 (2014-01-31)
++++++++++++++++++
- Allow filtering via elasticsearch filter dsl
0.1.2 (2014-01-30)
++++++++++++++++++
- Fix pip install (add missing MANIFEST file)
0.1.1 (2014-01-30)
++++++++++++++++++
- Add changelog ;)
- Migrate readme to rst and use it for ``long_description``
0.1.0 (2014-01-28)
++++++++++++++++++
- Initial release
===========
.. image:: https://travis-ci.org/petrjasek/eve-elastic.png?branch=master
:target: https://travis-ci.org/petrjasek/eve-elastic
Eve-Elastic is `elasticsearch <http://www.elasticsearch.org>`_ data layer for `eve REST framework <http://python-eve.org>`_.
Features
--------
- fulltext search
- filtering via elasticsearch filter dsl
- facets support
- elasticsearch mapping generator for schema
License
-------
Eve-Elastic is `GPLv3 <http://www.gnu.org/licenses/gpl-3.0.txt>`_ licensed.
Install
-------
.. code-block:: bash
$ pip install Eve-Elastic
Usage
-----
Set elastic as your eve data layer.
.. code-block:: python
import eve
form eve_elastic import Elastic
app = eve.Eve(data=Elastic)
Config
------
There are 2 options for Eve-Elastic taken from ``app.config``:
- ``ELASTICSEARCH_URL`` (default: ``'http://localhost:9200/'``)
- ``ELASTICSEARCH_INDEX`` - (default: ``'eve'``)
Query params
------------
Eve-Elastic supports eve like queries via ``where`` param which work as `term <http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-term-filter.html>`_ filter.
On top of this, there is a predefined `query_string <http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html>`_ query which does fulltext search.
.. code-block:: bash
$ curl http://localhost:5000/items?q=foo&df=name
- ``q`` - query (default: ``*``)
- ``df`` - default field (default: ``_all``)
Filter DSL
~~~~~~~~~~
For more sophisticated filtering, you can use ``filter`` query param which will be used as filter for the query, using elastic `filter dsl <http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-filters.html>`_.
Facets
------
To add a facets support for specific resource, add ``facets`` into its ``datasource``:
.. code-block:: python
DOMAIN = {
'contacts': {
'datasource':
'facets': {
'urgency': {'terms': {'field': 'urgency'}},
'versioncreated': {'date_histogram': {'field': 'versioncreated', 'interval': 'hour'}}
}
}
}
You will find `more info about facets in elasticsearch docs <http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-facets.html>`_.
.. :changelog:
Changelog
---------
0.1.3 (2014-01-31)
++++++++++++++++++
- Allow filtering via elasticsearch filter dsl
0.1.2 (2014-01-30)
++++++++++++++++++
- Fix pip install (add missing MANIFEST file)
0.1.1 (2014-01-30)
++++++++++++++++++
- Add changelog ;)
- Migrate readme to rst and use it for ``long_description``
0.1.0 (2014-01-28)
++++++++++++++++++
- 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
Eve-Elastic-0.1.3b.tar.gz
(41.4 kB
view details)
File details
Details for the file Eve-Elastic-0.1.3b.tar.gz
.
File metadata
- Download URL: Eve-Elastic-0.1.3b.tar.gz
- Upload date:
- Size: 41.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f2b59194d49917c46d049ff57fdbe0a5d52392100451cc68d133eaa5d30c2904 |
|
MD5 | 788b51413dc3f5685324523d7ef79a77 |
|
BLAKE2b-256 | 9f44ca0fc606f3df990c7f0b58db78b20711ebb82d0917e762fd8e997bd749b6 |