elasticsearch/docs/reference/mapping/params/index-prefixes.asciidoc
Mayya Sharipova b460f081c2
[DOCS] _index_prefix for highligh matched_fields (#118569)
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.
2024-12-12 10:24:55 -05:00

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]