Skip to main content

Python client for Elasticsearch built on top of elasticsearch-dsl

Project description

fiqs
====

fiqs is an opinionated high-level library whose goal is to help you write concise queries
agains Elasticsearch and better consume the results. It is built on top of the awesome [Elasticsearch
DSL](<https://github.com/elastic/elasticsearch-dsl-py>) library.

fiqs exposes a ``flatten_result`` function which transforms an elasticsearch-dsl ``Result``, or a dictionary, into the list of its nodes.
fiqs also lets you create Model classes, a la Django, which automatically generates an Elasticsearch mapping.
Finally fiqs exposes a ``FQuery`` objects which, leveraging your models, lets you write less verbose queries against Elasticsearch.


Compatibility
-------------

fiqs is compatible with Elasticsearch 5.X and works with both Python 2.7 and Python 3.3


Code example
------------

You define a model, matching what is in your Elasticsearch cluster:

```python
from fiqs import models

class Sale(models.Model):
index = 'sale_data'
doc_type = 'sale'

id = fields.IntegerField()
shop_id = fields.IntegerField()
client_id = fields.KeywordField()

timestamp = fields.DateField()
price = fields.IntegerField()
payment_type = fields.KeywordField(choices=['wire_transfer', 'cash', 'store_credit'])
```


You can then write clean queries:

```python
from elasticsearch_dsl import Search
from fiqs.aggregations import Sum
from fiqs.query import FQuery

from .models import Sale

search = Search(...)
metric = FQuery(search).values(
total_sales=Sum(Sale.price),
).group_by(
Sale.shop_id,
Sale.client_id,
)
result = metric.eval()
```


And let fiqs organise the results:

```python
print result
# [
# {
# "shop_id": 1,
# "client_id": 1,
# "doc_count": 30,
# "total_sales": 12345.0,
# },
# {
# "shop_id": 2,
# "client_id": 1,
# "doc_count": 20,
# "total_sales": 23456.0,
# },
# {
# "shop_id": 3,
# "client_id": 1,
# "doc_count": 10,
# "total_sales": 34567.0,
# },
# [...]
# ]
```


Documentation
-------------

Documentation is available at https://fiqs.readthedocs.io/


Contributing
------------

The fiqs project is hosted on [GitLab](<https://gitlab.com/pmourlanne/fiqs>)

To run the tests on your machine use this command: ``python setup.py test`` Some tests are used to generate results output from Elasticsearch. To run them you will need to run a docker container on your machine: ``docker run -d -p 8200:9200 -p 8300:9300 elasticsearch:5.0.2`` and then run ``py.test -k docker``.


License
-------

See attached LICENSE file.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fiqs-0.3.27.tar.gz (27.5 kB view details)

Uploaded Source

File details

Details for the file fiqs-0.3.27.tar.gz.

File metadata

  • Download URL: fiqs-0.3.27.tar.gz
  • Upload date:
  • Size: 27.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for fiqs-0.3.27.tar.gz
Algorithm Hash digest
SHA256 02a382f9f1e0f2aa9cc6a6f28f2485248dedc8c4c21707884d3b58f67669042b
MD5 b9fc6aca4ccfab715142e2a10edcd9fc
BLAKE2b-256 10a79e529b012c0692b0436f282fb31a46dd6e8f5e90d99dedc4dbfee2a364ed

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page