mirror of
https://github.com/elastic/elasticsearch.git
synced 2025-04-25 07:37:19 -04:00
Enhance documenation to explain that "_index_prefix" subfield must be added to `matched_fields` param for highlighting a main field. When doing prefix queries on fields that are indexed with prefixes, "_index_prefix" subfield is used. If we try to highlight the main field, we may not get any results. "_index_prefix" subfield must be added to `matched_fields` which instructs ES to use matches from "_index_prefix" to highlight the main field.
83 lines
1.8 KiB
Text
83 lines
1.8 KiB
Text
[[index-prefixes]]
|
|
=== `index_prefixes`
|
|
|
|
The `index_prefixes` parameter enables the indexing of term prefixes to speed
|
|
up prefix searches. It accepts the following optional settings:
|
|
|
|
[horizontal]
|
|
`min_chars`::
|
|
|
|
The minimum prefix length to index. Must be greater than 0, and defaults
|
|
to 2. The value is inclusive.
|
|
|
|
`max_chars`::
|
|
|
|
The maximum prefix length to index. Must be less than 20, and defaults to 5.
|
|
The value is inclusive.
|
|
|
|
This example creates a text field using the default prefix length settings:
|
|
|
|
[source,console]
|
|
--------------------------------
|
|
PUT my-index-000001
|
|
{
|
|
"mappings": {
|
|
"properties": {
|
|
"body_text": {
|
|
"type": "text",
|
|
"index_prefixes": { } <1>
|
|
}
|
|
}
|
|
}
|
|
}
|
|
--------------------------------
|
|
|
|
<1> An empty settings object will use the default `min_chars` and `max_chars`
|
|
settings
|
|
|
|
This example uses custom prefix length settings:
|
|
|
|
[source,console]
|
|
--------------------------------
|
|
PUT my-index-000001
|
|
{
|
|
"mappings": {
|
|
"properties": {
|
|
"full_name": {
|
|
"type": "text",
|
|
"index_prefixes": {
|
|
"min_chars" : 1,
|
|
"max_chars" : 10
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
--------------------------------
|
|
|
|
`index_prefixes` parameter instructs {ES} to create a subfield "._index_prefix". This
|
|
field will be used to do fast prefix queries. When doing highlighting, add "._index_prefix"
|
|
subfield to the `matched_fields` parameter to highlight the main field based on the
|
|
found matches of the prefix field, like in the request below:
|
|
|
|
[source,console]
|
|
--------------------------------
|
|
GET my-index-000001/_search
|
|
{
|
|
"query": {
|
|
"prefix": {
|
|
"full_name": {
|
|
"value": "ki"
|
|
}
|
|
}
|
|
},
|
|
"highlight": {
|
|
"fields": {
|
|
"full_name": {
|
|
"matched_fields": ["full_name._index_prefix"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
--------------------------------
|
|
// TEST[continued]
|