Study: DeveloperTools(DevTool)/DevTool: NoSQL(Elastic, Mongo)
[Elastic] ELK Stack이란? 기본 개념 적립
Elastic Stack이란? 레시피 검색 프로그램에 아파치 루씬(Apache Lucene)을 적용하려던 중 루씬이 가진 한계를 보완하기 위해 새로 검색엔진을 만들기 위해 시작한 오픈소스 프로젝트가 'Elasticsearch' 입니다. Logstash, Kibana와 함께 사용 되면서 한동안 ELK Stack (Elasticsearch, Logstash, Kibana) 이라고 널리 알려지게 되었으며, 현재 'Elastic Stack' 으로 명명하면서 모니터링, 클라우드 서비스, 머신러닝 등의 기능을 계속해서 개발, 확장해 나가고 있습니다. 'Elastic Stack' 에서 Elasticsearch는 검색 및 분석 엔진이며, Logstash는 데이터를 수집하는 동시에 변환하며 Elasticsearch 같은..
[Elastic] Elasticsearch 데이터 타입: 정확한 데이터 타입으로 입력해야 분류, 연산, 검색 가능!
Elasticsearch 데이터 타입 이 문서 내의 데이터 타입의 경우, 미리 지정해 두어야 해당 데이터 타입으로 설정가능합니다. 만약에 해당 데이터 타입으로 선언해두지 않고 데이터를 받게 된다면? 기본적으로 설정되는 데이터 타입으로 자동으로 지정되며, 자동으로 설정된 인덱스의 경우 수정을 하려면 해당 필드를 삭제하거나 새로 인덱스를 생성하여 데이터를 이동해야하는 수고로움이 발생할 수 있으니 참고 부탁드립니다!! epoch_millis 시간 데이터 "field_name" : { "type" : "date", "format" : "yyyy-MM-dd HH:mm:ss||epoch_millis" } epoch_second 시간 데이터 "field_name" : { "type" : "date", "format"..
[Elastic] Elasticsearch 인덱스 생성 및 삭제: shards, replica, mapping...
인덱스 생성 1. 인덱스 생성: 샤드, 레플리카 설정 1.1 인덱스 생성: shards=3, replicas=2 PUT /$index { "settings": { "index": { "number_of_shards": 3, "number_of_replicas": 2 } } } shards 개수는 생성 이후 변경 불가능하고 replicas 개수는 변경 가능합니다. 1.2 인덱스 생성: default shards, replicas // default shards: 1, replicas: 0 PUT /$index 2. 인덱스 생성: 스키마(mapping) 생성 + 샤드, 레플리카 2.1 스키마리스(schemaless) Elastic Search는 RDB 처럼 데이터를 insert하였을 때 테이블이 없다면데이터..
[Elastic] Elasticsearch 구문 검색: 기본 Query 정리(Elastic Query DSL)
Query DSL( Domain Specific Language ) json 포맷으로 query를 만들어서 검색을 해보는 Query DSL에 대해 알아보겠습니다. 물론 SQL 문으로 검색할수도 있지만, elastic에서는 검색할 때 대부분 Query DSL을 사용하므로 이 방법을 익혀두는 것이 좋습니다. 앞으로 소개 할 query 절은 Query Context 또는 Filter Context에서 사용되는지 여부에 따라 다르게 동작합니다. Query Context: "해당 document가 query 절과 얼마나 잘 일치하는가?"라는 질문에 응답하는데, document가 얼마나 잘 일치하는지를 _score( 관련성 점수, relevance score )로 표현합니다. Filter Context: "해당 d..
[Elastic] Elasticsearch 구문 검색: 원하는 데이터를 삭제하자
Elasticsearch에서 원하는 데이터 삭제하기 POST 인덱스명/타입명/_delete_by_query e.g. 인덱스: test, 타입: _doc인 document 내용(json 데이터)를 모두 삭제 POST test/_doc/_delete_by_query { "query": { "match_all": {} } } e.g. 인덱스: test, 타입: _doc인 document 내용(json 데이터) 중 "data"라는 필드가 없는 데이터를 삭제 POST test/_doc/_delete_by_query { "query": { "bool": { "must_not": [ { "exists": { "field": "data" } } ] } } } + 특정 필드가 존재하는 인덱스를 추출하는 쿼리 GET te..