Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Руководство [8.17] ›REST API

API перезагрузки анализаторов поиска

Новая справка по API

Для получения самых последних данных по 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API