What’s new in ElasticUtils

Version 0.5: in development

API-breaking changes:



  • Added demote transform: it adds boosting query support allowing you to do a negative query which reduces scores for documents that match.

  • The elasticutils version is now available in elasticutils.__version__ as well as elasticutils._version.__version__.

  • Added __in support for queries. Doing:

    S().query(foo__in=['a', 'b', 'c'])

    does a terms query now.

  • Added MLT class which does morelikethis.

  • Added API documentation for S, an index, order_by docs, fixed some icky bugs, and generally improved everything at least a little bit.

Version 0.4: Released July 31st, 2012

API-breaking changes:

  • ElasticUtils no longer requires Django.

    If you’re using Django, you should change your import statements from things like:

    from elasticutils import get_es, S, F


    from elasticutils.contrib.django import get_es, S, F

    Further, Django helper modules like cron, tasks, and models were all moved to elasticutils.contrib.django.

    We moved ESTestCase from elasticutils.tests to elasticutils.contrib.django.estestcase

    If you don’t use Django, ElasticUtils is easier to use!

  • S no longer requires a type.

    If you’re not using Django, S no longer requires a type. If you don’t specify a type, then ElasticUtils will return results as dicts.

  • Values and values_list changed.

    values() was renamed to values_list().

    values_list() (was values()) now always returns a list of tuples even if you only requested a single field. Previously, doing something like:

    searcher = S().values_list('id')

    would return something like:

    [1, 2, 3, 4, 5]

    Now it returns:

    [(1,), (2,), (3,), (4,), (5,)]
  • Facet functionality was rewritten.

    Changed .facet() to be arg-driven and allow for filtered and global_ flags.

    Changed .facets() to .facet_counts() to match Django Haystack.

    Added .facet_raw() which allows you to do more complicated facets including scripting. This is similar to the original .facet() implementation.


  • Overhauled and cleaned up ElasticUtils tests. Running tests can be done with:

    DJANGO_SETTINGS_MODULE=es_settings nosetests
  • Default timeout was changed from 1 second to 5 seconds.

  • Added es transform: it allows you to specify the settings with which to create an ES when the search is executed.

  • Added es_builder transform: it allows you to specify a function that builds an ES which will be executed to create an ES when the search is executed.

  • Added indexes transform: it allows you to specify the indexes to use for the search.

  • Added doctypes transform: it allows you to specify the doctypes to use for the search.

  • Added explain transform: it allows you to set the “explain” flag which gives you an explanation of how the score was calculated.

    I also added elasticutils.utils.format_elasticutils which formats the resulting explanation text into something slightly more readable. But it’s likely this will change in the future.

  • Added boost transform: it allows you to do query-time field boosting.

  • Added support for prefix. It’s the same as startswith, but it uses the same word that ElasticSearch uses. At some point, we’ll remove support for startswith.

  • Added support for text_phrase and query_string queries.

  • Added highlight transform: generates highlighted fragments of content that matched the query.

  • Removed requirement for nuggets.

  • Continued to improve documentation.

Version 0.3: Released June 1st, 2012


  • Add documentation for debugging, project details and other things.
  • Minor project cleanup to make it easier to maintain and use
  • Make get_es() more useful. It now takes overrides that allow you to configure multiple kinds of ES objects for different purposes.

Project Versions

Table Of Contents

Previous topic


Next topic


This Page