API перезагрузки анализаторов поиска
Перезагружает анализаторы поиска индекса и их ресурсы. Для потоков данных API перезагружает анализаторы поиска и ресурсы для базовых индексов потока.
resp = client.indices.reload_search_analyzers(
index="my-index-000001",
)
print(resp)
resp1 = client.indices.clear_cache(
index="my-index-000001",
request=True,
)
print(resp1) response = client.indices.reload_search_analyzers( index: 'my-index-000001' ) puts response response = client.indices.clear_cache( index: 'my-index-000001', request: true ) puts response
const response = await client.indices.reloadSearchAnalyzers({
index: "my-index-000001",
});
console.log(response);
const response1 = await client.indices.clearCache({
index: "my-index-000001",
request: "true",
});
console.log(response1); POST /my-index-000001/_reload_search_analyzers POST /my-index-000001/_cache/clear?request=true
После перезагрузки анализаторов поиска необходимо очистить кэш запросов, чтобы убедиться, что он не содержит ответов, полученных из предыдущих версий анализатора.
Запрос
POST /<target>/_reload_search_analyzers
GET /<target>/_reload_search_analyzers
Предварительные условия
- Если функции безопасности Elasticsearch включены, у вас должны быть права доступа
manageк индексу для целевого потока данных, индекса или псевдонима.
Описание
Вы можете использовать API перезагрузки анализаторов поиска, чтобы использовать изменения в файлах синонимов, используемых в synonym_graph или synonym фильтре токенов анализатора поиска. Для этого фильтр токенов должен иметь флаг updateable значения true и использоваться только в анализаторах поиска.
Этот API не выполняет перезагрузку для каждого фрагмента индекса. Вместо этого он выполняет перезагрузку для каждого узла, содержащего фрагменты индекса. В результате общее количество фрагментов, возвращаемое API, может отличаться от количества фрагментов индекса.
Поскольку перезагрузка затрагивает каждый узел с фрагментом индекса, важно обновить файл синонимов на каждом узле данных в кластере, включая узлы, не содержащие реплики фрагмента, перед использованием этого API. Это гарантирует, что файл синонимов обновлен везде в кластере на случай, если фрагменты будут перемещены в будущем.
Параметры пути
-
<target> - (Обязательно, строка) Список потоков данных, индексов и псевдонимов, разделенных запятыми, используемых для ограничения запроса. Поддерживаются подстановки (
*). Для указания всех потоков данных и индексов используйте*или_all.
Параметры запроса
-
allow_no_indices -
(Необязательно, Булево) Если
false, запрос возвращает ошибку, если какое-либо выражение с подстановкой, псевдоним индекса или_allзначение указывает только отсутствующие или закрытые индексы. Это поведение применяется даже если запрос направлен на другие открытые индексы. Например, запрос, направленный наfoo*,bar*, возвращает ошибку, если индекс начинается сfoo, но индекс, начинающийся сbar, отсутствует.По умолчанию
true. -
expand_wildcards -
(Необязательно, строка) Тип индекса, с которым могут совпадать шаблоны подстановок. Если запрос может указывать на потоки данных, этот аргумент определяет, соответствуют ли шаблоны подстановок скрытым потокам данных. Поддерживаются значения, разделенные запятыми, такие как
open,hidden. Допустимые значения:-
all - Соответствие любому потоку данных или индексу, включая скрытые.
-
open - Соответствие открытым, нескрытым индексам. Также соответствует любому нескрытому потоку данных.
-
closed - Соответствие закрытым, нескрытым индексам. Также соответствует любому нескрытому потоку данных. Потоки данных не могут быть закрыты.
-
hidden - Соответствие скрытым потокам данных и скрытым индексам. Должно быть использовано совместно с
open,closedили обоими. -
none - Шаблоны подстановок не допускаются.
По умолчанию
open. -
-
ignore_unavailable - (Необязательно, Булево) Если
false, запрос возвращает ошибку, если он указывает на отсутствующий или закрытый индекс. По умолчаниюfalse.
Примеры
Используйте API создания индекса, чтобы создать индекс с анализатором поиска, содержащим обновляемый фильтр синонимов.
Использование следующего анализатора в качестве анализатора индекса приводит к ошибке.
resp = client.indices.create(
index="my-index-000001",
settings={
"index": {
"analysis": {
"analyzer": {
"my_synonyms": {
"tokenizer": "whitespace",
"filter": [
"synonym"
]
}
},
"filter": {
"synonym": {
"type": "synonym_graph",
"synonyms_path": "analysis/synonym.txt",
"updateable": True
}
}
}
}
},
mappings={
"properties": {
"text": {
"type": "text",
"analyzer": "standard",
"search_analyzer": "my_synonyms"
}
}
},
)
print(resp) response = client.indices.create(
index: 'my-index-000001',
body: {
settings: {
index: {
analysis: {
analyzer: {
my_synonyms: {
tokenizer: 'whitespace',
filter: [
'synonym'
]
}
},
filter: {
synonym: {
type: 'synonym_graph',
synonyms_path: 'analysis/synonym.txt',
updateable: true
}
}
}
}
},
mappings: {
properties: {
text: {
type: 'text',
analyzer: 'standard',
search_analyzer: 'my_synonyms'
}
}
}
}
)
puts response const response = await client.indices.create({
index: "my-index-000001",
settings: {
index: {
analysis: {
analyzer: {
my_synonyms: {
tokenizer: "whitespace",
filter: ["synonym"],
},
},
filter: {
synonym: {
type: "synonym_graph",
synonyms_path: "analysis/synonym.txt",
updateable: true,
},
},
},
},
},
mappings: {
properties: {
text: {
type: "text",
analyzer: "standard",
search_analyzer: "my_synonyms",
},
},
},
});
console.log(response); PUT /my-index-000001
{
"settings": {
"index": {
"analysis": {
"analyzer": {
"my_synonyms": {
"tokenizer": "whitespace",
"filter": [ "synonym" ]
}
},
"filter": {
"synonym": {
"type": "synonym_graph",
"synonyms_path": "analysis/synonym.txt",
"updateable": true
}
}
}
}
},
"mappings": {
"properties": {
"text": {
"type": "text",
"analyzer": "standard",
"search_analyzer": "my_synonyms"
}
}
}
} | Включает файл синонимов. | |
| Отмечает фильтр токенов как обновляемый. | |
| Отмечает анализатор как анализатор поиска. |
После обновления файла синонимов используйте API перезагрузки анализатора, чтобы перезагрузить анализатор поиска и использовать изменения в файле.
resp = client.indices.reload_search_analyzers(
index="my-index-000001",
)
print(resp) response = client.indices.reload_search_analyzers( index: 'my-index-000001' ) puts response
const response = await client.indices.reloadSearchAnalyzers({
index: "my-index-000001",
});
console.log(response); POST /my-index-000001/_reload_search_analyzers
API возвращает следующий ответ.
{
"_shards": {
"total": 2,
"successful": 2,
"failed": 0
},
"reload_details": [
{
"index": "my-index-000001",
"reloaded_analyzers": [
"my_synonyms"
],
"reloaded_node_ids": [
"mfdqTXn_T7SGr2Ho2KT8uw"
]
}
]
}
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/indices-reload-analyzers.html