ElasticsearchClient.jl is a native Julia implementation of the Elasticsearch client library. This library was inspired by elasticsearch-ruby and implements very similar architectural approach.

There are two main modules: ElasticTransfort and API.

  • ElasticTransport is responsible for low-level interactions with Elasticsearch and it allows requests to be made using HTTP parameters.
  • API provides a high-level API equivalent to the Elasticsearch API. Currently, not all API methods are implemented, so help would be appreciated.

Example of API usage:

using ElasticsearchClient

client = ElasticsearchClient.Client()

body = (
      field="find something",

# Methods are exported from API module
response = ElasticsearchClient.search(client, body=body)

@show response.body["took"]

For vector search code examples both for Elasticsearch and OpenSearch, see GitHub - OpenSesame/GptSearchPlugin: Simple and pure Julia-based implementation of ChatGPT retrieval plugin logic