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)
const response = await client.search({
index: "my-index-000001",
query: {
prefix: {
full_name: {
value: "ki",
},
},
},
highlight: {
fields: {
full_name: {
matched_fields: ["full_name._index_prefix"],
},
},
},
});
console.log(response);
GET my-index-000001/_search
{
"query": {
"prefix": {
"full_name": {
"value": "ki"
}
}
},
"highlight": {
"fields": {
"full_name": {
"matched_fields": ["full_name._index_prefix"]
}
}
}
}