Elastisch 2.2.0-rc1 is released
TL;DR
Elastisch is a battle tested, small but feature rich and well documented Clojure client for ElasticSearch. It supports virtually every Elastic Search feature and has solid documentation.
2.2.0-rc1 is a release candidate of Elastisch 2.2 which introduces new features and bug fixes.
Elastisch 2.2.0
will be the last release to target ElasticSearch 1.7
. After
that Elastisch development will focus on ElasticSearch 2.x
.
Changes between Elastisch 2.1.x and 2.2.0-rc1
Corrected Filter Option Name in Native Client
Native client now uses :filter
for filters, just like the REST one.
Add completion and fuzzy suggestors for Native Client
clojurewerkz.elastisch.native.document
has new function suggest
for term autocompletion. It allows filter results by category and
geolocation:
(require '[clojurewerkz.elastisch.native.document :as doc])
(doc/suggest conn index-name :completion "e" {:context {:gender "female"}})
(doc/suggest conn index-name :fuzzy "esmor" {:fuzziness 1 :min-length 2})
Contributed by Timo Sulg (@timgluz).
Fixed index/close
and index/open
argument type error
clojurewerkz.elastisch.native.conversion/->open-index-request
and ->close-index-request
passed plain string to CloseIndexRequest constructor, but it expected values passed as array of string.
Fixed it with existing function conversion/->string-array
and added missing tests for this usecase
into clojurewerkz.elastisch.native-api.indices-settings-test
.
Contributed by Timo Sulg (@timgluz).
Fixed update-with-script
in Native Client
clojurewerkz.elastisch.native.conversion/->update-request
arguments
updated in clojurewerkz.elastisch.native.document/update-with-script
to reflect
recent changes.
Contributed by Michael Nussbaum.
Index Stats Update
clojurewerkz.elastisch.rest.index/stats
has been updated for ElasticSearch 1.3.x
and later versions.
Contributed by Roman Pearah.
create
Bulk Operation Helper
Bulk operation helper functions now include create
.
Contributed by @nikopol.
allow setting :ignore-unmapped
in query sort instructions
In both native and rest apis, :ignore-unmapped
may be set in the query by specifying
a sort field-name and option-map instead of order name with the query/sort
function.
For example:
(require '[clojurewerkz.elastisch.native.document :as doc])
(require '[clojurewerkz.elastisch.query :as q])
(doc/search conn index type
{:query (q/query-string :query "software" :default_field "summary")
:sort (q/sort "unmapped-field-name" {:ignore_unmapped true
:order "asc"})})
Contributed by @ryfow
allow setting :ignore_unmapped
in query sort instructions
In both native and rest apis, :ignore-unmapped
may be set in the query by specifying
a sort field-name and option-map instead of order name with the query/sort
function.
For example:
(require '[clojurewerkz.elastisch.native.document :as doc])
(require '[clojurewerkz.elastisch.query :as q])
(doc/search conn [index-name missing-index-name]
mapping-type
:query (q/match-all)
:ignore_unavailable true)
Contributed by Joachim De Beule.
scan-and-scroll-seq
helper
scan-and-scroll-seq
provides an easier-to-use abstraction over ES’s
scan and scroll API, wrapping scroll-seq
and handling the
special-case first request.
Contributed by @loganmhb
ElasticSearch Java Client Upgrade
Elastisch now depends on ElasticSearch Java client version 1.7.x
.
clj-http Update
clj-http dependency has been upgraded to version 2.0.x
.
Better support for plural/single indices and aliases in native update-aliases
:remove
action now works with singular:index
key- multiple aliases can be added with single
:add
action - alias can be removed from multiple indices with single
:remove
action
Contributed by @mnylen
Index Settings Now Allow Keywordized Keys When Creating Index Using Native API
Previously only mappings allowed keys to be keywords, now same works with index settings.
Contributed by @mnylen
Support for Large Scroll IDs
Elastisch now supports scroll IDs larger than 4 KB.
Contributed by niko.
Bulk Operation Support in Native Client
Native client now supports bulk operations with the same API as the REST one.
Contributed by
- Mitchel Kuijpers (Avisi)
- Michael Nussbaum and Jack Lund (Braintree)
Fixed unregister-query in Native Client
clojurewerkz.elastisch.native.percolation/unregister-query
arguments
were mistakenly swapped when delegating to the Java client.
Contributed by Stephen Muss.
Guava Excluded From Dependencies
Contributed by Jan Stępień (Stylefruits).
Add support for Nested Aggregations in the Native Client
Native client now supports nesting in the following aggregations
histogram
date_histogram
range
date_range
terms
Contributed by Mitchel Kuijpers (Avisi).
ElasticSearch Java Client Upgrade
Elastisch now depends on ElasticSearch Java client version 1.4.x
.
clj-http Update
clj-http dependency has been upgraded to version 1.0.1
.
Cheshire Update
Cheshire dependency has been upgraded to version 5.4.0
.
Full Change Log
Elastisch change log is available on GitHub.
Thank You, Contributors
Kudos to Michael Nussbaum and Jeffrey Erikson for contributing to this release.
Elastisch is a ClojureWerkz Project
Elastisch is part of the group of libraries known as ClojureWerkz, together with
- Langohr, a Clojure client for RabbitMQ that embraces the AMQP 0.9.1 model
- Cassaforte, a Clojure Cassandra client
- Monger, a Clojure MongoDB client for a more civilized age
- Neocons, a client for the Neo4J REST API
- Welle, a Riak client with batteries included
- Quartzite, a powerful scheduling library
and several others. If you like Elastisch, you may also like our other projects.
Let us know what you think on Twitter or on the Clojure mailing list.
About the Author
Michael on behalf of the ClojureWerkz Team