En aquest tema, explorarem diverses tècniques i estratègies per optimitzar el rendiment de les cerques a Elasticsearch. A mesura que les dades creixen i les cerques es tornen més complexes, és crucial assegurar-se que el sistema pugui respondre de manera eficient. Aquest mòdul cobreix els següents aspectes:
- Estructura de les Dades
- Configuració d'Índexs
- Optimització de les Consultes
- Caché i Memòria
- Monitorització i Anàlisi de Rendiment
- Estructura de les Dades
1.1. Normalització vs. Desnormalització
- Normalització: Emmagatzemar dades en múltiples índexs o tipus per reduir la redundància.
- Desnormalització: Emmagatzemar dades en un sol índex per reduir el nombre de cerques necessàries.
Exemple:
{
"user": {
"id": "1",
"name": "John Doe",
"posts": [
{
"id": "101",
"title": "First Post",
"content": "This is my first post."
},
{
"id": "102",
"title": "Second Post",
"content": "This is my second post."
}
]
}
}Desnormalització: Les dades de l'usuari i les seves publicacions es troben en un sol document.
1.2. Elecció de Tipus de Dades
- Utilitza tipus de dades adequats per a cada camp (text, keyword, integer, date, etc.).
- Evita l'ús excessiu de camps de text analitzats si no és necessari.
- Configuració d'Índexs
2.1. Configuració de Shards i Replicació
- Shards: Divideixen les dades en parts més petites per distribuir la càrrega.
- Replicació: Còpies de seguretat dels shards per a la tolerància a fallades.
Exemple de Configuració:
2.2. Mapeig i Analitzadors
- Defineix mapejos personalitzats per optimitzar la indexació i la cerca.
- Utilitza analitzadors adequats per a les necessitats específiques de cerca.
Exemple de Mapeig:
PUT /my_index
{
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "standard"
},
"date": {
"type": "date"
}
}
}
}
- Optimització de les Consultes
3.1. Utilització de Filtratge
- Utilitza filtres en lloc de cerques quan sigui possible, ja que els filtres no es tornen a calcular per cada consulta.
Exemple:
3.2. Evitar Consultes Costoses
- Evita l'ús de consultes que requereixin un processament intensiu, com ara
wildcardoregexp.
3.3. Paginació Eficient
- Utilitza
search_afteren lloc defromisizeper paginar grans conjunts de dades.
Exemple:
- Caché i Memòria
4.1. Utilització de Caché
- Configura la caché de consultes per millorar el rendiment de cerques repetitives.
Exemple:
GET /my_index/_search
{
"query": {
"bool": {
"filter": [
{ "term": { "status": "active" } }
]
}
},
"request_cache": true
}4.2. Gestió de la Memòria
- Assegura't que Elasticsearch tingui suficient memòria heap assignada.
- Monitoritza l'ús de la memòria i ajusta els paràmetres segons sigui necessari.
- Monitorització i Anàlisi de Rendiment
5.1. Eines de Monitorització
- Utilitza Kibana i altres eines per monitoritzar el rendiment de les cerques i identificar colls d'ampolla.
5.2. Anàlisi de Logs
- Analitza els logs de Elasticsearch per detectar problemes de rendiment.
Exemple:
Exercicis Pràctics
Exercici 1: Configuració d'Índexs
- Crea un índex amb 5 shards i 2 rèpliques.
- Defineix un mapeig per a un camp de text i un camp de data.
Solució:
PUT /my_index
{
"settings": {
"number_of_shards": 5,
"number_of_replicas": 2
},
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "standard"
},
"date": {
"type": "date"
}
}
}
}Exercici 2: Optimització de Consultes
- Escriu una consulta que utilitzi un filtre per cercar documents amb un camp
statusigual aactive. - Utilitza
search_afterper paginar els resultats.
Solució:
GET /my_index/_search
{
"query": {
"bool": {
"filter": [
{ "term": { "status": "active" } }
]
}
},
"size": 10,
"search_after": [1463538857, "654323"]
}Conclusió
En aquest tema, hem explorat diverses tècniques per optimitzar el rendiment de les cerques a Elasticsearch. Hem après sobre l'estructura de les dades, la configuració d'índexs, l'optimització de les consultes, la gestió de la memòria i la monitorització del rendiment. Amb aquestes eines i coneixements, estaràs millor preparat per gestionar cerques eficients i escalables en Elasticsearch.
Curs d'Elasticsearch
Mòdul 1: Introducció a Elasticsearch
- Què és Elasticsearch?
- Instal·lant Elasticsearch
- Conceptes Bàsics: Nodes, Clústers i Índexs
- Arquitectura d'Elasticsearch
Mòdul 2: Començant amb Elasticsearch
Mòdul 3: Tècniques Avançades de Cerca
Mòdul 4: Modelatge de Dades i Gestió d'Índexs
Mòdul 5: Rendiment i Escalabilitat
- Optimitzant el Rendiment de la Cerca
- Escalant Elasticsearch
- Monitorització i Manteniment
- Còpia de Seguretat i Restauració
Mòdul 6: Seguretat i Control d'Accés
- Assegurant Elasticsearch
- Autenticació i Autorització d'Usuaris
- Control d'Accés Basat en Rols
- Auditoria i Compliment
Mòdul 7: Integracions i Ecosistema
- Elasticsearch amb Logstash
- Elasticsearch amb Kibana
- Elasticsearch amb Beats
- Elasticsearch amb Altres Eines
