Este tópico responde às perguntas mais frequentes sobre o Elasticsearch open source.
Visão geral
Quais são as políticas de limpeza de cache do Elasticsearch?
O erro "statusCode: 500" é exibido ao consultar um índice. O que fazer?
Como alterar o fuso horário para visualização de dados no console Kibana?
Em quais tipos de dados posso execute consultas term do Elasticsearch?
O que fazer se o erro too_many_buckets_exception for retornado durante uma consulta?
É possível alterar o valor do parâmetro script.painless.regex.enabled?
Como configure o tamanho do pool de threads para índices?
Antes de alterar o tamanho do pool de threads, confirme se o pool de threads de gravação está sob pressão. Execute o comando a seguir para verificar:
GET /_cat/thread_pool?v=true&h=id,name,queue,active,rejected,completed
Uma proporção alta de tarefas rejeitadas em relação às concluídas no pool de threads de gravação indica a necessidade de aumentar o tamanho da fila.
Para configure o tamanho do pool de threads, defina o parâmetro thread_pool.write.queue_size no arquivo de configuração YAML do cluster. Para obter mais informações, consulte Configurar o arquivo YML.

Para clusters Elasticsearch anteriores à versão 6.X, use o parâmetro thread_pool.index.queue_size.
O que fazer se ocorrer um erro de Out of Memory (OOM)?
Execute o comando a seguir para limpar o cache. Em seguida, analise a causa e atualize a configuração do cluster Elasticsearch ou ajuste sua aplicação.
curl -u elastic:<password> -XPOST "localhost:9200/<index_name>/_cache/clear?pretty"
|
Parâmetro |
Descrição |
|
|
Senha usada para acessar o cluster Elasticsearch. Definida durante a criação do cluster ou a inicialização do Kibana. |
|
|
Nome do índice cujo cache será limpo. |
Para instruções sobre atualização, consulte Atualizar a configuração de um cluster.
Como gerencie manualmente um shard?
Use a API reroute ou o Cerebro. Para detalhes sobre a API reroute, consulte API Cluster reroute.
Quais são as políticas de limpeza de cache do Elasticsearch?
O Elasticsearch oferece suporte a três escopos de limpeza de cache:
-
Limpeza do cache de todos os índices:
curl localhost:9200/_cache/clear?pretty -
Limpeza do cache de um índice específico:
curl localhost:9200/<index_name>/_cache/clear?pretty -
Limpeza do cache de vários índices simultaneamente:
curl localhost:9200/<index_name1>,<index_name2>,<index_name3>/_cache/clear?pretty
Como redirecionar shards de índice?
Se houver shards perdidos ou mal alocados, execute o comando a seguir para movê-los ou realocá-los:
curl -XPOST 'localhost:9200/_cluster/reroute' -d '{
"commands" : [ {
"move" :
{
"index" : "test", "shard" : 0,
"from_node" : "node1", "to_node" : "node2"
}
},
{
"allocate" : {
"index" : "test", "shard" : 1, "node" : "node3"
}
}
]
}'
O erro "statusCode: 500" é exibido ao consultar um índice. O que fazer?
Use uma ferramenta de terceiros, como o Cerebro, para consultar o mesmo índice:
Se a consulta for bem-sucedida no Cerebro, o nome do índice é inválido. Renomeie o índice. Nomes de índice podem conter apenas letras, sublinhados (
_) e dígitos.Caso a consulta falhe no Cerebro, o problema reside no próprio índice ou cluster. Verifique se o cluster contém o índice e está funcionando normalmente.
Como alterar o valor do parâmetro auto_create_index?
Execute o seguinte comando:
PUT /_cluster/settings
{
"persistent" : {
"action": {
"auto_create_index": "false"
}
}
}
O valor padrão de auto_create_index é false, o que impede o Elasticsearch de criar índices automaticamente. Evite alterar esse valor. Caso contrário, o Elasticsearch poderá criar índices excessivos com mappings ou configurações inesperadas.
Quanto tempo leva para crie um snapshot armazenado no OSS?
Quando as contagens de shards, o uso de memória, o uso de disco e a utilização da CPU estão em níveis normais, a criação de um snapshot para 80 GB de dados de índice leva aproximadamente 30 minutos.
Como determinar o número de shards ao crie um índice?
Divida o tamanho total dos dados pelo tamanho de cada shard para obter o número de shards. Recomendamos limitar o tamanho de cada shard a 30 GB. Se o tamanho de cada shard exceder 50 GB, o desempenho da consulta será severamente afetado.
Aumentar adequadamente o número de shards pode acelerar a criação do índice. No entanto, o desempenho da consulta é impactado tanto por um número muito pequeno quanto muito grande de shards.
Excesso de shards gera mais identificadores de arquivo e sobrecarga de comunicação entre nós, tornando as consultas mais lentas.
Poucos shards fazem com que cada um armazene mais dados, o que também desacelera as consultas.
Um erro é exibido ao usar o plugin elasticsearch-repository-oss para migrar dados de um cluster Elasticsearch autogerenciado. O que fazer?
Mensagem de erro:
ERROR: This plugin was built with an older plugin structure. Contact the plugin author to remove the intermediate "elasticsearch" directory within the plugin zip.
Solução: Renomeie o pacote ZIP de elasticsearch para elasticsearch-repository-oss e copie-o para o diretório plugins.
Como alterar o fuso horário para visualização de dados no console Kibana?
Altere o fuso horário diretamente no console Kibana. O exemplo a seguir usa um cluster Elasticsearch 6.7.0.

A figura a seguir mostra o fuso horário selecionado.

Em quais tipos de dados posso execute consultas term do Elasticsearch?
Consultas term operam no nível de palavra e funcionam em dados estruturados: números, datas e campos keyword. Elas pesquisam diretamente nos índices invertidos sem dividir o texto em tokens.
Para campos de texto, utilize consultas full-text, pois elas tokenizam a entrada antes de buscar.
Quais são os cuidados ao usar aliases no Elasticsearch?
O número total de shards em todos os índices que compartilham o mesmo alias deve ser inferior a 1.024.
O que fazer se o erro too_many_buckets_exception for retornado durante uma consulta?
Mensagem de erro:
"type": "too_many_buckets_exception", "reason": "Trying to create too many buckets. Must be less than or equal to: [10000] but was [10001]"
Reduza o parâmetro size nas agregações de bucket para permanecer dentro do limite de 10.000 buckets. Para obter detalhes, consulte Limitar o número de buckets que podem ser criados em uma agregação. Também é possível seguir a abordagem descrita em Aumentar max_buckets para visualizações específicas.
Como exclua vários índices simultaneamente?
Por padrão, o Elasticsearch não permite a exclusão em massa de índices. Para ative essa funcionalidade, execute:
PUT /_cluster/settings
{
"persistent": {
"action.destructive_requires_name": false
}
}
Após essa configuração entrar em vigor, use um caractere curinga para exclua vários índices simultaneamente.
É possível alterar o valor do parâmetro script.painless.regex.enabled?
O valor padrão é false. Expressões regulares em scripts Painless consomem recursos significativos. Portanto, mantenha essa configuração desativada, a menos que haja necessidade específica de suporte a regex nos scripts.
Para ative expressões regulares, defina script.painless.regex.enabled como true no arquivo de configuração elasticsearch.yml.
Como alterar as configurações de mapping, a contagem de shards primários ou a contagem de shards de réplica de um índice?
Configurações de mapping
Alterar o mapping de um índice existente requer reindexação. Para tipos de campo suportados, consulte Tipo de campo de dados.
Shards primários
Não é possível alterar a contagem de shards primários após a criação do índice. Se a contagem atual não atender mais às necessidades, use a API reindex para migrar dados para um novo índice com a contagem correta de shards.
Shards de réplica
Para alterar o número de shards de réplica para cada shard primário, execute:
PUT test/_settings
{
"number_of_replicas": 0
}
Planeje as contagens de shards primários e de réplica antes de crie um índice para evitar reindexações custosas posteriormente.
Como armazenar os valores de um campo?
Por padrão, o Elasticsearch não armazena valores individuais de campos. Ele armazena apenas o campo _source, que contém o documento JSON original completo e permite recuperar qualquer campo no momento da consulta.
Para armazenar os valores de um campo específico separadamente, defina store: true no mapping do campo:
PUT /my_index
{
"mappings": {
"properties": {
"my_field": {
"type": "text",
"store": true
}
}
}
}
Ative o armazenamento no nível do campo aumenta o uso de disco. A menos que haja um motivo específico para armazenar valores de campo separadamente, utilize o _source.
Como controlar se um campo pode ser agregado?
A possibilidade de agregar um campo depende do seu tipo de dados e da ativação dos dados de campo subjacentes (doc_values ou fielddata).
Campos agregáveis por padrão
Campos numéricos, de data e keyword suportam agregação via doc_values, que utiliza um modelo de armazenamento orientado a colunas otimizado para classificação, agregação e scripts.
Campos de texto (não agregáveis por padrão)
Para agregar campos de texto, ative o fielddata no mapping:
PUT /my_index
{
"mappings": {
"properties": {
"my_text_field": {
"type": "text",
"fielddata": true
}
}
}
}
Ative o fielddata carrega todos os dados de texto desse campo na memória heap da JVM, o que aumenta significativamente o uso de memória.
Desativar agregação para um campo
Para impedir que um campo seja agregado:
Defina
enabled: falsepara o campo no mapping.Exclua o campo inteiramente do documento.
O que fazer se o erro "Unknown char_filter type [stop] for **" for exibido ao configure o Elasticsearch?
O tipo stop é um filtro de token, não um filtro de caracteres. Colocá-lo na seção char_filter causa esse erro.
Mova a configuração stop de char_filter para a seção filter do analisador:
"settings": {
"analysis": {
"analyzer": {
"my_custom_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase",
"stop"
]
}
},
"filter": {
"stop": {
"type": "stop",
"stopwords": "_english_"
}
}
}
}
Verifique também se todos os tipos de componentes especificados em char_filter, tokenizer e filter são tipos de filtro válidos do Elasticsearch.