Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions docs/reference/migration/migrate_5_0.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ way to do this is to upgrade to Elasticsearch 2.3 or later and to use the
* <<breaking_50_search_changes>>
* <<breaking_50_mapping_changes>>
* <<breaking_50_percolator>>
* <<breaking_50_suggester>>
* <<breaking_50_index_apis>>
* <<breaking_50_settings_changes>>
* <<breaking_50_allocation>>
Expand All @@ -51,6 +52,8 @@ include::migrate_5_0/mapping.asciidoc[]

include::migrate_5_0/percolator.asciidoc[]

include::migrate_5_0/suggest.asciidoc[]

include::migrate_5_0/index-apis.asciidoc[]

include::migrate_5_0/settings.asciidoc[]
Expand Down
91 changes: 91 additions & 0 deletions docs/reference/migration/migrate_5_0/suggest.asciidoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
[[breaking_50_suggester]]
=== 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.

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.

NOTE: 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. This enables
retrieving any field value from the document. This is exposed
through the query-time `payload` option in `completion` and `context`
suggesters:

[source,sh]
---------------
GET /my_index/_search
{
"suggest": {
"fooSuggestion": {
"text": "f"
"completion": {
"field": "fooSuggest",
"payload": ["field1", "field2"]
}
}
}
}
---------------

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 a field in the same document as the
suggestion for enabling retrieval at query-time. The support for
index-time `payloads` has been removed to avoid bloating the in-memory
index with suggestion metadata. The time that it takes to retrieve payloads
depends heavily on the size of the `_source` field. The smaller the `_source`,
the faster the retrieval.

==== 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:

[source,sh]
---------------
"contexts": {
"color": [ {...} ],
"location": [ {...} ]
}
---------------