The ClojureWerkz Blog

News and updates about ClojureWerkz projects

Langohr 3.6.1 Is Released

TL;DR

Langohr is a small Clojure RabbitMQ client.

3.6.1 is a minor release that fixes a bug, updates dependencies, and introduces a small feature.

Change Log

Langohr change log is available on GitHub.

Langohr is a ClojureWerkz Project

Langohr is part of the group of libraries known as ClojureWerkz, together with

  • Elastisch, a minimalistic well documented Clojure client for ElasticSearch
  • Cassaforte, a Clojure Cassandra client built around CQL 3.0
  • Monger, a Clojure MongoDB client for a more civilized age
  • Neocons, a client for the Neo4J REST API
  • Quartzite, a powerful scheduling library

and several others. If you like Langohr, 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

Metrics-clojure 2.7.0 Is Released

TL;DR

metrics-clojure is a Clojure façade around Coda Hale’s Metrics library, originally developed by Steve Losh.

metrics-clojure is not a ClojureWerkz project but we help maintain it and consider it to be a very valuable library.

Changes Between 2.6.0 and 2.7.0

Functions for Working with Reservoirs

Ning Sun contributed several new functions that instantiate various reservoir types:

  • metrics.core/uniform-reservior
  • metrics.core/exponentially-decaying-reservoir
  • metrics.core/sliding-time-window-reservoir
  • metrics.core/sliding-window-reservoir

and a few more.

GH issue: #104

Easier to Retrieve Metrics

Ning Sun contributed several new functions that retrieve different type of metrics from a registry:

  • metrics.core/meters
  • metrics.core/histograms
  • metrics.core/timers
  • metrics.core/gauges
  • metrics.core/counters

GH issue: #102

Updated Dependencies

Contributed by Pierre-Yves Ritschard.

Full Change Log

metrics-clojure change log is available on GitHub.

About the Author

Michael on behalf of the metrics-clojure Team.

Metrics-clojure 2.6.1 Is Released

TL;DR

metrics-clojure is a Clojure façade around Coda Hale’s Metrics library, originally developed by Steve Losh.

metrics-clojure is not a ClojureWerkz project but we help maintain it and consider it to be a very valuable library.

Changes Between 2.6.0 and 2.6.1

Dependencies Update

Contributed by Pierre-Yves Ritschard.

Changes Between 2.5.0 and 2.6.0

Riemann Reporter

Contribited by Ragnar Dahlén.

DropWizard Metrics Upgrade

DropWizard Metrics was upgraded to 3.1.2.

Contributed by Matthias Nüßler.

Cheshire Upgrade

Cheshire was upgraded to 5.5.0.

Contributed by Shantanu Kumar.

Predicate-based Metric Removal

metrics.core/remove-metrics is a new function that removes metrics based on a predicate.

Contributed by Vincent Bernat.

Infinite Recursion in Ganglia

Ganglia reporter had an infinite recursion.

GH issue: #71.

Add support for timing expressions in core.async/go blocks

Added the macro metrics.timers/start-stop-time to enable timing expressions that include parking functions in core.async/go blocks.

Contributed by Wil Yegelwel.

Full Change Log

metrics-clojure change log is available on GitHub.

About the Author

Michael on behalf of the metrics-clojure Team.

Langohr 3.5.0 Is Released

TL;DR

Langohr is a small Clojure RabbitMQ client.

3.5.0 is a minor release that updates RabbitMQ Java client dependency.

Changes between Langohr 3.4.x and 3.5.0

RabbitMQ Java Client Upgrade

RabbitMQ Java client dependency has been updated to 3.6.0.

Change Log

Langohr change log is available on GitHub.

Langohr is a ClojureWerkz Project

Langohr is part of the group of libraries known as ClojureWerkz, together with

  • Elastisch, a minimalistic well documented Clojure client for ElasticSearch
  • Cassaforte, a Clojure Cassandra client built around CQL 3.0
  • Monger, a Clojure MongoDB client for a more civilized age
  • Neocons, a client for the Neo4J REST API
  • Quartzite, a powerful scheduling library

and several others. If you like Langohr, 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

Elastisch 2.2.1 Is Released

TL;DR

Elastisch is a battle tested, small but feature rich and well documented Clojure client for ElasticSearch.

2.2.1 is a bug fix release.

Changes between Elastisch 2.2.0 and 2.2.1

Correctly Pass Field List to the Native Client

GitHub issue: #193.

Contributed by @dspiteself.

Full Change Log

Elastisch change log is available on GitHub.

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

Monger 3.0.2 Is Released

TL;DR

Monger is an idiomatic Clojure MongoDB driver for a more civilized age. 3.0.2 is a maintenance release.

Changes between 3.0.1 and 3.0.2

MongoDB Java Driver Update

MongoDB Java driver dependency has been updated to 3.2.0.

Cursor Hinting Option Fix

Contributed by Stijn Opheide.

Change Log

Monger change log is available on GitHub.

Monger is a ClojureWerkz Project

Monger 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 built around CQL
  • Elastisch, a minimalistic Clojure client for ElasticSearch
  • Neocons, a client for the Neo4J REST API
  • Quartzite, a powerful scheduling library

and several others. If you like Monger, you may also like our other projects.

Let us know what you think on Twitter or on the Clojure mailing list.

About the Author

@michaelklishin on behalf of the ClojureWerkz Team

Elastisch 2.2.0 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 is a feature release of Elastisch.

Elastisch 2.2.0 is the last release to target ElasticSearch 1.7. After that Elastisch development will focus on ElasticSearch 2.x (and Elastisch 3.0).

Changes between Elastisch 2.1.x and 2.2.0

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:

1
2
3
4
(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:

1
2
3
4
5
6
7
(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:

1
2
3
4
5
6
7
(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

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:

1
2
3
4
(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:

1
2
3
4
5
6
7
(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:

1
2
3
4
5
6
7
(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

Pantomime 2.8.0 Is Released

TL;DR

Pantomime is a Clojure interface to Apache Tika. 2.8.0 is a minor release that upgrades Tika and introduces a minor feature.

Changes between Pantomime 2.7.0 and 2.8.0

Apache Tika 1.11

Apache Tika dependency has been upgraded to version 1.11.

MIME Pattern Extension

pantomime.mime/add-pattern is a new function that makes it possible to extent MIME patterns used by the library:

1
2
3
(require '[pantomime.mime :as pm])

(pm/add-pattern "text/lorem-ipsum" ".+\\.ipsum$" "lorem.ipsum")

Contributed by Daniel Woelfel and Tommi Reinikainen.

Clojure 1.7

The library now depends on Clojure 1.7.

Change Log

Pantomime change log is available on GitHub.

Pantomime is a ClojureWerkz Project

Pantomime 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
  • Elastisch, a minimalistic Clojure client for ElasticSearch
  • Cassaforte, a Clojure Cassandra client built around CQL
  • Monger, a Clojure MongoDB client for a more civilized age
  • Welle, a Riak client with batteries included
  • Neocons, a client for the Neo4J REST API
  • Quartzite, a powerful scheduling library

and several others. If you like Pantomime, you may also like our other projects.

Let us know what you think on Twitter or on the Clojure mailing list.

Michael on behalf of the ClojureWerkz Team

Langohr 3.4.2 Is Released

TL;DR

Langohr is a small Clojure RabbitMQ client.

3.4.2 is a minor release that updates RabbitMQ Java client dependency.

Changes between Langohr 3.4.1 and 3.4.2

RabbitMQ Java Client Upgrade

RabbitMQ Java client dependency has been updated to 3.5.7.

Change Log

Langohr change log is available on GitHub.

Langohr is a ClojureWerkz Project

Langohr is part of the group of libraries known as ClojureWerkz, together with

  • Elastisch, a minimalistic well documented Clojure client for ElasticSearch
  • Cassaforte, a Clojure Cassandra client built around CQL 3.0
  • Monger, a Clojure MongoDB client for a more civilized age
  • Neocons, a client for the Neo4J REST API
  • Quartzite, a powerful scheduling library

and several others. If you like Langohr, 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