Low level query completion for Elasticsearch

Usage no npm install needed!

<script type="module">
  import elasticsearchCompletion from 'https://cdn.skypack.dev/elasticsearch-completion';


elasticsearch-completion Build status

Low level query completion for Elasticsearch

This was built as part of an internal tool to autocomplete queries for Elasticsearch.

Getting Started

Install the module with: npm install elasticsearch-completion

// Create a completion class
var ElasticsearchCompletion = require('elasticsearch-completion');
var esCompletion = new ElasticsearchCompletion([

// Supply some queries to complete against
esCompletion.match(''); // ['name:', 'location:', '_exists_:', '_missing_:']
esCompletion.match('na'); // ['name:']
esCompletion.match('name:'); // []
esCompletion.match('_exists_:'); // ['_exists_:name', '_exists_:location']


elasticsearch-completion exposes ElasticsearchCompletion via its module.exports.

new ElasticsearchCompletion(fields)

Constructor for a new completion class

  • fields Array - Names of fields to match against (e.g. name, location)
    • For example, ['foo', 'bar'] would supply matches agains the fields foo and bar


Find matching completions for an Elasticsearch query

  • query String - Query being used in Elasticsearch


  • matches Array - Collection of matching completions for the query
    • For example, na might complete to ['name:'] and _ex might complete to ['_exists_:']


In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint via npm run lint and test via npm test.


Copyright (c) 2015 Underdog.io

Licensed under the MIT license.