<Elasticsearch란?>

Lucene-based Search engine이다

특징: Real-time searching과 Distributed Computing(Clustering), REST API 제공

Usage: NoSQL(like mongodb), Analytics

default port: 9200


<Logical 배치> (Application 관점)

 - 구성요소: index, type(doc type), document 3가지

   각각 RDB의 Database, Table, Row와 비슷한 개념이다

 - Index: number of shards를 설정한다. Physical 배치에서 설명.

 - Type: schema-free (Indexing을 하면 field type을 자동으로 추측하므로, schema를 직접 세팅하지 않아도 된다)

   (하지만 매핑이 실패할 수도 있으므로, 직접 매핑하는 것이 좋다고 한다)

 - Document: JSON 형식으로, 실제 데이터는 여기에 저장된다


<Physical 배치> (Manager 관점)

 - 구성요소: Node, Shard

 - Node: Process

 - Shard: Index의 조각(일부분)으로서, Index는 Shard 1개 이상으로 구성되어있다

   Shard는 또 Primary Shard, Replica 2가지가 있다

   Primary Shard: Index의 일부분

   Replica: Primary Shard의 복제본 -> reliability, search performance 효과가 있다

   Elasticsearch는 Lucene-based이다. Elasticsearch의 Index는 Shard라는 Chunk들로 나뉘고, 각 Shard는 Lucene Index이다.

   reverse index 등은 패스했다.


<REST API>

CRUD: Create/Read/Update/Delete로 설명하겠다 (기본 데이터 처리기능)

 - Create(Indexing): PUT

   curl -XPUT "Content-Type: application/json" localhost:9200/index_name/type_name/document_id -d <body>

   body example: 


 - Read(Search): GET, POST

   curl localhost:9200/index_name/type_name/document_id

   curl -XPOST localhost:9200/index_name/type_name/doc_id -d <body>

   body example: {"query": {"match_all": {}}, "sort": {"_id": "asc"}}

   _search 까먹음


 - Update: PUT, POST

   이미 존재하는 document에 PUT

   POST 까먹음

   _update 까먹음


 - Delete: DELETE, POST

   curl -XDELETE localhost:9200/index_name/type_name/doc_id

   POST 까먹음

   _delete_by_query 까먹음


REST API를 테스트할 때 linux/mac은 curl, windows는 postman을 사용하자




<ELK Stack?>
Elasticsearch(search engine)

Logstash(data processing pipeline)

Kibana(analytics, visualization platform)



WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/