Elastic Search
ElasticSearch è un search and analytics engine distribuito e JSON-based costruito su Apache Lucene
Lucene vs ElasticSearch
- Lucene libreria standalone
- Elasticsearch è un vero e proprio server web in esecuzione sulla nostra macchina che si mette in ascolto su una porta.
Definizioni
- Cluster: consiste in uno o più nodi che condivido lo stesso cluster name. Ogni cluster ha un singolo nodo master scelto automaticamente e rimpiazzato in caso di fail automaticamente con uno qualsiasi dei nodi del cluster.
- L’indice è quindi distribuito sui nodi del cluster e quando nuovi nodi joinano il cluster questi vengono semplicemente aggiunti
- Nodo: un nodo è una istanza di ElasticSearch che appartiene a un cluster. All’avvio, un nodo va alla ricerca del cluster con il nome del suo cluster e cerca di joinarlo
- Il nodo ha all’interno degli shards
- Shard: uno shard è una singola istanza di Lucene. E’ l’unità a basso livello gestita direttamente da ElasticSearch.
- Di default una istanza per ogni indice
- Indice: è come un database in un database relazionale, ha un mapping che definisce i diversi campi. Ogni indice è associato a uno o più shards primari e può avere degli shards che lo replicano
- Documento: un documento è un documento JSON memorizzato in ElasticSearch. E’ come se fosse una riga di una tabella di un db relazionale. Ogni documento è memorizzato in un indice e ha un ID.
- Campo: un documento è formato da una lista di campi, o coppie chiave-valore. Il valore può essere un semplice valore come una stringa o un intero, oppure una struttura come un array o un oggetto