Não entendi como funciona ainda essa questão dos índices invertidos, poderia explicar melhor?
Não entendi como funciona ainda essa questão dos índices invertidos, poderia explicar melhor?
Olá Thiago, tudo bem?
De fato o índice invertido é a parte mais complicada do elasticsearch, mas também responsável por fazer grande parte da mágica :)
O índice invertido nada mais é do que o mecanismo em que o elasticsearch associa os "tokens" com os documentos encontrados
Vou basear a minha explicação utilizando um exemplo:
Suponha que temos essa pessoa em nosso índice
{
"nome": "João Silva",
"interesses": ["futebol", "música", "literatura"],
"cidade": "São Paulo",
"formação": "Letras",
"estado": "SP",
"país": "Brasil"
}
Para ter uma busca mais eficiente o elasticsearch irá quebrar esse nosso usuário (documento) em tokens ou seja em pequenos pedaços, ficando algo como:
João
Silva
futebol
música
E isso será armazenado em um outro documento que conta os tokens e os documentos onde foram encontrados, ou seja, se inserirmos outra pessoa que também tenha interesse por música, e depois fizermos uma busca o nosso índice invertido terá algo parecido como :
Termo | Frequência | Documento
---------------------------------------
música | 2 | 1, 2
futebol | 1 | 1
---------------------------------------
Ou seja temos para o termo música temos uma frequência ( quantidade de vezes que esse aparece juntando todos os documentos) e os documentos onde foram encontrados ( em nosso caso o documento do João Silva e do outro usuário inserido)
Mas no que o índice invertido nos auxilia?
Primeiro que ele torna a busca mais rápido, e segundo que esses tokens são gerados pelos nossos analyzers então podemos quando estamos estruturando nosso índice definir qual será o analisador que iremos utilizar parar criar tokens melhores:
Se procurarmos em nossos índice termo musica ou MUSICA não iremos encontrar nenhum usuário, porém podemos definir que o nosso campo interesse será analisado utilizando o portuguese dessa maneira os tokens gerados agora serão:
music
futebol
E dessa maneira iremos encontrar tanto música, musica ou MUSICA porque estamos gerando tokens eficiente de busca :)
Conseguiu compreender?
Então de maneira reduzida podemos dizer que o índice invertido é a forma que o elastic search utiliza para quebrar as informações do nosso documento para armazenar onde encontrou o termo e qual a frequência, e podemos modificar a maneira como geramos esses tokens para ter resultado ainda melhores :)
Abraços e Bons Estudos!