Fragmentos e réplicas em pesquisas elasticas

Estou a tentar perceber o que é o fragmento e a réplica na busca elastica, mas não consigo entender. Se eu baixar Elasticsearch e executar o script, então a partir do que eu sei eu comecei um conjunto com um único nó. Agora este nó (meu PC) tem 5 cacos (?) e algumas réplicas (?).

O que são?tenho 5 duplicados do Índice? Em caso afirmativo, porquê? Posso precisar de uma explicação.

Author: Francesco Casula, 2013-03-29

7 answers

Vou tentar explicar com um verdadeiro exemplo, já que a resposta e as respostas que tens não parecem ajudar-te.

Quando você baixar a pesquisa elastica e iniciá-la, você cria um nó de pesquisa elastica que tenta juntar-se a um conjunto existente, se disponível, ou cria um novo. Digamos que criou o seu novo grupo com um único nó, o que acabou de iniciar. Não temos dados, portanto precisamos criar um índice.

Quando se cria um índice (um índice é criado automaticamente quando você indexar o primeiro documento também) você pode definir de quantos fragmentos ele será composto. Se você não especificar um número, ele terá o número padrão de cacos: 5 primárias. O que significa?

Significa que a elasticsearch criará 5 Fragmentos primários que conterão os seus dados.
 ____    ____    ____    ____    ____
| 1  |  | 2  |  | 3  |  | 4  |  | 5  |
|____|  |____|  |____|  |____|  |____|

Sempre que indexares um documento, a elasticsearch decidirá qual o fragmento primário que deve guardar esse documento e irá indexá-lo lá. Estilhaços primários não são uma cópia dos dados, são os dados! Ter vários fragmentos ajuda a tirar vantagem do processamento paralelo em uma única máquina, mas o ponto é que se começarmos outra instância elasticsearch no mesmo conjunto, os fragmentos serão distribuídos de uma forma uniforme sobre o conjunto.

O nó 1 irá então conter, por exemplo, apenas três fragmentos:

 ____    ____    ____ 
| 1  |  | 2  |  | 3  |
|____|  |____|  |____|

Desde que os dois fragmentos restantes foram movidos para o nó recém-iniciado:

 ____    ____
| 4  |  | 5  |
|____|  |____|
Porque é que isto acontece? Porque a elasticsearch é um motor de busca distribuído e desta forma você pode fazer uso de múltiplos nós/Máquinas para gerenciar grandes quantidades de dados.

Cada índice de elasticsearch é composto por pelo menos um fragmento primário desde que é onde os dados são armazenados. Cada fragmento vem a um custo, no entanto, portanto, se você tem um único nó e nenhum crescimento previsível, basta ficar com um único fragmento primário.

Outro tipo de fragmento é uma réplica. O padrão é 1, o que significa que cada primário shard será copiado para outro shard que conterá os mesmos dados. Réplicas são usadas para aumentar o desempenho de pesquisa e para falhas. Uma réplica shard nunca vai ser alocada no mesmo nó onde a primária relacionada é (seria praticamente como colocar um backup no mesmo disco que os dados originais). De volta ao nosso exemplo, com 1 réplica teremos todo o índice em cada nó, uma vez que 3 fragmentos de réplicas serão alocados no primeiro nó e conterão exatamente os mesmos dados que as primárias no segundo nó:
 ____    ____    ____    ____    ____
| 1  |  | 2  |  | 3  |  | 4R |  | 5R |
|____|  |____|  |____|  |____|  |____|

O mesmo para o segundo nó, que conterá uma cópia dos cacos primários no primeiro nó:

 ____    ____    ____    ____    ____
| 1R |  | 2R |  | 3R |  | 4  |  | 5  |
|____|  |____|  |____|  |____|  |____|

Com uma configuração como esta, se um nó descer, você ainda tem o índice inteiro. Os fragmentos da réplica tornar-se-ão automaticamente primários e o conjunto funcionará correctamente apesar da falha do nó, como se segue:

 ____    ____    ____    ____    ____
| 1  |  | 2  |  | 3  |  | 4  |  | 5  |
|____|  |____|  |____|  |____|  |____|

Uma vez que tens "number_of_replicas":1, as réplicas já não podem ser atribuídas porque nunca são atribuídas no mesmo nó onde está o primário. É por isso que você terá 5 Fragmentos não classificados, as réplicas, e o status de aglomerado será YELLOW em vez de GREEN. Nenhuma perda de dados, mas poderia ser melhor como alguns fragmentos não podem ser atribuídos.

Assim que o nó que restou estiver de volta, vai juntar-se ao aglomerado de novo e as réplicas serão atribuídas de novo. O fragmento existente no segundo nó pode ser carregado, mas eles precisam ser sincronizados com os outros fragmentos, como operações de escrita mais provável aconteceu enquanto o nódulo estava em baixo. No final desta operação, o status de cluster se tornará GREEN. Espero que isto esclareça as coisas para ti.
 769
Author: javanna, 2016-12-22 10:05:45
Se não gostas mesmo de ver amarelo. você pode definir o número de réplicas como zero:
curl -XPUT 'localhost:9200/_settings' -d '
{
    "index" : {
        "number_of_replicas" : 0
    }
}
'

Lembre-se que só deve fazer isto na sua caixa de desenvolvimento local.

 19
Author: jyu, 2015-06-05 19:36:22

Um índice é dividido em fragmentos para os distribuir e escalar.

As réplicas são cópias dos cacos e proporcionam fiabilidade se um nó for perdido. Há muitas vezes confusão neste número porque a contagem de réplicas = = 1 significa que o aglomerado deve ter a principal e uma cópia replicada do fragmento disponível para estar no estado verde.

Para que as réplicas sejam criadas, deve ter pelo menos 2 nós no seu conjunto.

Pode achar as definições aqui mais fáceis de entender: http://www.elasticsearch.org/guide/reference/glossary/

Melhores Cumprimentos., Paul

 17
Author: ppearcy, 2013-03-29 05:34:40

Um índice é dividido em fragmentos para os distribuir e escalar.

As réplicas são cópias dos cacos.

Um nó é uma instância em execução de busca elástica que pertence a um conjunto.

Um conjunto consiste num ou mais nós que partilham o mesmo nome de grupo. Cada conjunto tem um único nó mestre que é escolhido automaticamente pelo conjunto e que pode ser substituído se o nó mestre atual falhar.

 4
Author: Pruthvi Kumar, 2016-04-01 06:07:43

Élitro:

  1. sendo o servidor de pesquisa distribuído, ElasticSearch usa o conceito chamado Shard distribuir documentos de índice por todos os nós.
  2. Um {[2] } pode potencialmente armazenar uma grande quantidade de dados que podem exceder os limites de hardware de a single node
  3. por exemplo, um índice único de mil milhões de documentos que retomam 1TB de o espaço em disco pode não caber no disco de um único nó ou pode ser demasiado lento para atender pedidos de busca de um único nó sozinho.
  4. To resolva este problema, Elasticsearch fornece a capacidade de subdividir o seu índice em várias peças chamadas shards.
  5. quando você cria um índice, você pode simplesmente definir o número de shards isso tu queres.
  6. Documents são armazenados em shards, e os fragmentos são atribuídos a nodes em o seu cluster
  7. À medida que o seu cluster cresce ou encolhe, {[4] } irá automaticamente migrar fragmentos entre nodes para que o cluster permaneça equilibrado.
  8. um fragmento pode ser um primary shard ou um replica shard.
  9. cada documento no seu índice pertence a single primary shard, por isso o número de cacos primários que você tem determina o máximo quantidade de dados que o seu índice pode conter
  10. A replica shard é apenas uma cópia de um fragmento primário.

Réplica:

  1. Replica shard é a cópia de primary Shard, para evitar a perda de dados em caso de falha de hardware.
  2. Elasticsearch permite - lhe fazer uma ou mais cópias do seu índice cacos para o que se chama réplica cacos, ou replicas para abreviar.
  3. Um index também pode ser replicado zero (ou seja, sem réplicas) ou mais situacao.
  4. as number of shards e as réplicas podem ser definidas por índice na hora da criação do Índice.
  5. após o índice ser criado, você pode mudar o número de réplicas dinamicamente a qualquer momento, mas você cannot change the number of shards depois do facto.
  6. por omissão, cada índice em Elasticsearch é atribuído a 5 Fragmentos primários e 1 replica O que significa que se tiver pelo menos dois nós no seu grupo, o seu índice terá 5 cacos primários e outros 5 réplicas (1 réplica completa) para um total de 10 Fragmentos por indice.
 2
Author: Vino, 2018-04-18 06:25:19

Na pesquisa elastica, no nível superior indexamos os documentos em índices. Cada índice tem número de cacos que distribuem internamente os dados e dentro dos cacos existem os segmentos de Luceno que é o núcleo de armazenamento dos dados. Então, se o índice tem 5 cacos, significa que os dados foram distribuídos através dos cacos e não existem os mesmos dados nos cacos.

Cuidado com o vídeo que explica o núcleo de ES https://www.youtube.com/watch?v=PpX7J-G2PEo

Artigo sobre índices múltiplos ou fragmentos múltiplos Pesquisa elástica, múltiplos índices versus um índice e tipos para diferentes conjuntos de dados?

 1
Author: Prakash Ghanshani, 2017-05-23 12:26:20
Vou explicar isto usando cenários de palavras reais. Imagine que você é um site de comércio eletrônico. À medida que você se torna mais popular, mais vendedores e produtos adicionar ao seu site. Você vai perceber o número de produtos que você pode precisar para indexar cresceu e é muito grande para caber em um disco rígido de um nó. Mesmo se ele se encaixa no disco rígido, realizar uma pesquisa linear através de todos os documentos em uma máquina é extremamente lento. um índice num nó não tirará partido da distribuição configuração do conjunto em que a pesquisa elastica funciona.

Então a pesquisa elastica divide os documentos no índice através de vários nós no conjunto. Cada divisão do documento é chamada de fragmento. Cada nó que carrega um fragmento de um documento terá apenas um subconjunto do documento. suponha que você tem 100 produtos e 5 fragmentos, cada fragmento terá 20 produtos. Esta partilha de dados é o que torna possível a pesquisa de baixa latência na pesquisa elastica. a pesquisa é conduzida em paralelo em múltiplos no. Os resultados são agregados e devolvidos. No entanto, os fragmentos não proporcionam tolerância à falha. Ou seja, se qualquer nó que contenha o fragmento estiver em baixo, a saúde do aglomerado torna-se amarela. Ou seja, alguns dos dados não estão disponíveis.

Para aumentar a tolerância à falha, as réplicas vêm à tona. Por deault elástico search cria uma única réplica de cada fragmento. Estas réplicas são sempre criadas num outro nó onde o fragmento primário não reside. Então, para tornar o sistema tolerante a falhas, você pode ter que aumentar o número de nós em seu conjunto e também depende do número de fragmentos do seu índice. A fórmula geral para calcular o número de nós necessários com base em réplicas e cacos é " número de nós = número de cacos*(número de réplicas + 1)".A prática padrão é ter pelo menos uma réplica para a tolerância a falhas.

configurar o número de estilhaços é uma operação estática, o que significa que você tem que especificá-lo quando você está criando um índice. Qualquer alteração após isso exigiria uma reformulação completa dos dados e levará tempo. Mas, configurar o número de réplicas é uma operação dinâmica e pode ser feito a qualquer momento após a criação do Índice também.

Pode configurar o número de fragmentos e réplicas para o seu índice com o comando abaixo.

curl -XPUT 'localhost:9200/sampleindex?pretty' -H 'Content-Type: application/json' -d ' { "settings":{ "number_of_shards":2, "number_of_replicas":1 } } '

 0
Author: Keerthikanth Chowdary, 2018-06-01 10:55:43