Suggester changes

The completion suggester has undergone a complete rewrite. This means that the syntax and data structure for fields of type completion have changed, as have the syntax and response of completion suggester requests. See completion suggester for details.

For indices created before Elasticsearch 5.0.0, completion fields and the completion suggester will continue to work as they did in Elasticsearch 2.x. However, it is not possible to run a completion suggester query across indices created in 2.x and indices created in 5.x.

It is strongly recommended to reindex indices containing 2.x completion fields in 5.x to take advantage of the new features listed below.

You will need to change the structure of the completion field values when reindexing.

Completion suggester is near-real time

Previously, deleted suggestions could be included in results even after refreshing an index. Now, deletions are visible in near-real time, i.e. as soon as the index has been refreshed. This applies to suggestion entries for both context and completion suggesters.

Completion suggester is document-oriented

Suggestions are aware of the document they belong to. Now, associated documents (_source) are returned as part of completion suggestions.

_source meta-field must be enabled, which is the default behavior, to enable returning _source with suggestions.

Previously, context and completion suggesters supported an index-time payloads option, which was used to store and return metadata with suggestions. Now metadata can be stored as part of the the same document as the suggestion for retrieval at query-time. The support for index-time payloads has been removed to avoid bloating the in-memory index with suggestion metadata.

Simpler completion indexing

As suggestions are document-oriented, suggestion metadata (e.g. output) should now be specified as a field in the document. The support for specifying output when indexing suggestion entries has been removed. Now suggestion result entry’s text is always the un-analyzed value of the suggestion’s input (same as not specifying output while indexing suggestions in pre-5.0 indices).

Completion mapping with multiple contexts

The context option in completion field mapping is now an array to support multiple named contexts per completion field. Note that this is sugar for indexing same suggestions under different name with different contexts. The default option for a named context has been removed. Now querying with no context against a context-enabled completion field yields results from all indexed suggestions. Note that performance for match-all-context query degrades with the number of unique context value for a given completion field.

Completion suggestion with multiple context filtering

Previously context option in a suggest request was used for filtering suggestions by context value. Now, the option has been named to contexts to specify multiple named context filters. Note that this is not supported by pre-5.0 indices. Following is the contexts snippet for a suggest query filtered by both color and location contexts:

"contexts": {
  "color": [ {...} ],
  "location": [ {...} ]
}