본문 바로가기

공부방/Elasticsearch

(30)
정확도 - Relevancy (Score 책정) Elasticsearch의 검색 결과에는 스코어 점수가 표시가 됩니다. 이 점수는 검색된 결과가 얼마나 검색 조건과 일치하는지를 나타내며 점수가 높은 순으로 결과를 보여줍니다. 다음의 match 쿼리 결과를 살펴보겠습니다.Elasticsearch의 검색 결과에는 스코어 점수가 표시가 됩니다. 이 점수는 검색된 결과가 얼마나 검색 조건과 일치하는지를 나타내며 점수가 높은 순으로 결과를 보여줍니다. 다음의 match 쿼리 결과를 살펴보겠습니다. GET my_index/_search { "query": { "match": { "message": "quick dog" } } } 각 검색 결과의 _score 항목에 스코어 점수가 표시되고 이 점수가 높은 결과부터 나타납니다. 그리고 상단의 max_score에는 전..
검색과 쿼리 - Query DSL (domain specific language) 연습용 데이터 생성 my_index라는 인덱스를 연습용으로 사용해 보도록 하겠습니다. my_index가 존재하는 경우 먼저 인덱스 삭제부터 진행하도록 하겠습니다. DELETE my_index my_index에 5개의 field를 넣어주고 각각의 field에는 message 값이 있는 데이터를 넣어줍니다. POST my_index/_bulk {"index":{"_id":1}} {"message":"The quick brown fox"} {"index":{"_id":2}} {"message":"The quick brown fox jumps over the lazy dog"} {"index":{"_id":3}} {"message":"The quick brown fox jumps over the quick do..
CRUD - 입력, 조회, 수정, 삭제 Elasticsearch 커맨드 소개 단일 데이터는 document 이며 인덱스 document의 논리적인 집합을 말합니다. Elasticsearch에서는 단일 도큐먼트별로 고유한 URL을 갖습니다. 도큐먼트에 접근하는 URL은 아래와 같습니다. http://://_doc/ 6.x 이전버전 참고 http://:/// 인덱스 생성 및 데이터 저장 (PUT) 데이터를 저장하는 경우 인덱스가 존재하지 않는다면, 인덱스가 먼저 생성이 된 후 데이터가 저장됩니다. PUT을 이용해 데이터를 저장하는 방법은 두가지가 있습니다. 1. 덮어쓰기 2. 덮어쓰기 방지 각각의 방법을 살펴보겠습니다. 덮어쓰기 (_doc) 기존 데이터가 존재한다면 덮어쓰는 방법입니다. _doc 이라는 명령어를 이용하여 데이터를 저장하는데 1번 ..
인덱스와 샤드 Elasticsearch 용어 정리 엘라스틱 서치에 들어가는 낱개의 데이터 -> 도큐먼트 도큐먼트의 논리적인 집합 -> 인덱스 (RDBMS 테이블) 인덱스는 하나의 저장되지 않고 샤드라는 개념으로 쪼개서 저장이 됨 -> 여러개의 노드에 흩어져서 저장이 됨 RDBMS Elasticsearch 테이블 인덱스 파티션 샤드 (Shard) 행(Row). 레코드 도큐먼트 (Document) 열 필드 (Field) 스키마 (Schema) 매핑 (Mapping) SQL Query DSL 프라이머리 샤드(Primary Shard)와 복제본(Replica) 인덱스를 생성할 때 별도의 설정을 하지 않으면 7.0 버전부터는 디폴트로 1개의 인덱스는 1개의 샤드로 구성 6.x 이하 버전에서는 5개로 구성 클러스터에 노드를 추가..
pm2를 이용한 데몬 실행 Elasticsearch background 실행 Elasticsearch를 실행할 때 추가적으로 -d, -p 옵션을 사용할 수 있다. -d: Elasticsearch를 백그라운드 데몬으로 실행합니다. -p : Elasticsearch 프로세스 ID를 지정한 파일에 저장합니다. 실행이 종료되면 저장된 파일은 자동으로 삭제됩니다. echo 'bin/elasticsearch -d -p es.pid' > start.sh echo 'kill `cat es.pid`' > stop.sh chmod 755 start.sh stop.sh Kibana background 실행 kibana process는 node로 찾아야 한다. ps -ef | grep node nvm 설치 node 버전 설치 kibana 폴더에 있는 ..
Kibana 아래와 같은 서버 구성을 진행할 것이다. 키바나는 elastic 3번 노드 인스턴스에 같이 올려볼 것이다. client가 elastic1에 접속할 때는 curl command를 통해서 통신 kibana에 접속할 때는 kibana와 elasticsearch와 rest api를 통신 우리는 kibana 브라우저에 접속하고 5601 포트를 사용 5601 방화벽도 열어줘야함 노드 상태 확인 // local curl "http://elastic-1:9200/_cat/nodes?v" -u elastic // 패스워드 입력 kibana.yaml 파일에서 중요한 설정을 살펴보자 // /etc/hosts에 mapping 시켜놓았기 때문에 아래와 같이 사용 가능 server.host: "elastic-3" server.n..
elasticsearch - TLS 적용 보안 기능을 활성화 하자 elasticsearch.yaml 파일 설정 추가 xpack.security.enabled: true 노드간의 통신 보안 https://www.elastic.co/guide/en/elasticsearch/reference/7.11/encrypting-internode.html 공개키 생성 ./bin/elasticsearch-certutil ca // 공개키 패스워드 설정하라는 창이 뜸, 비밀번호를 입력한다 votmdnjem Certification 생성 elasticsearch는 certification 만들 수 있는 certutil을 제공 https://www.elastic.co/guide/en/elasticsearch/reference/7.11/encrypting-commun..
elasticsearch 기본 설정 및 cluster 구성 1. Elasticsearch 실행 상태 확인 아래 명령어를 통해서 elasticsearch가 돌아가고 있는 것을 확인할 수 있습니다. curl localhost:9200 만약에 curl: (7) Failed connect to localhost:9200; Connection refused 와 같은 에러가 발생한다면 elasticsearch.yml 파일을 통해 network 설정을 확인해보면 됩니다. // less -S ./elasticsearch-7.9.1/config/elasticsearch.yml // 만약 운영하고 있는 서버라면 내부 ip만을 통해 접근할 수 있도록 설정해 놓았을 수도 있을겁니다. // 아래와 같이 특정 ip만 접근 가능하도록 설정할 수도 있습니다. network.host: 10...