index_prefixes
editindex_prefixes
editThe index_prefixes
parameter enables the indexing of term prefixes to speed
up prefix searches. It accepts the following optional settings:
|
The minimum prefix length to index. Must be greater than 0, and defaults to 2. The value is inclusive. |
|
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:
resp = client.indices.create( index="my-index-000001", mappings={ "properties": { "body_text": { "type": "text", "index_prefixes": {} } } }, ) print(resp)
response = client.indices.create( index: 'my-index-000001', body: { mappings: { properties: { body_text: { type: 'text', index_prefixes: {} } } } } ) puts response
const response = await client.indices.create({ index: "my-index-000001", mappings: { properties: { body_text: { type: "text", index_prefixes: {}, }, }, }, }); console.log(response);
PUT my-index-000001 { "mappings": { "properties": { "body_text": { "type": "text", "index_prefixes": { } } } } }
This example uses custom prefix length settings:
resp = client.indices.create( index="my-index-000001", mappings={ "properties": { "full_name": { "type": "text", "index_prefixes": { "min_chars": 1, "max_chars": 10 } } } }, ) print(resp)
response = client.indices.create( index: 'my-index-000001', body: { mappings: { properties: { full_name: { type: 'text', index_prefixes: { min_chars: 1, max_chars: 10 } } } } } ) puts response
const response = await client.indices.create({ index: "my-index-000001", mappings: { properties: { full_name: { type: "text", index_prefixes: { min_chars: 1, max_chars: 10, }, }, }, }, }); console.log(response);
PUT my-index-000001 { "mappings": { "properties": { "full_name": { "type": "text", "index_prefixes": { "min_chars" : 1, "max_chars" : 10 } } } } }
index_prefixes
parameter instructs Elasticsearch 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:
resp = client.search( index="my-index-000001", query={ "prefix": { "full_name": { "value": "ki" } } }, highlight={ "fields": { "full_name": { "matched_fields": [ "full_name._index_prefix" ] } } }, ) print(resp)
GET my-index-000001/_search { "query": { "prefix": { "full_name": { "value": "ki" } } }, "highlight": { "fields": { "full_name": { "matched_fields": ["full_name._index_prefix"] } } } }