본문 바로가기

elasticsearch에 해당하는 글들

4 Articles matched
목록이 없습니다.
[Elasticsearch] 여러 인덱스 조회 시 없는 인덱스 조회 해도 에러 결과가 아닌 정상 결과 받도록 처리하는 방법 (how to multi-search non exist index) 여러 인덱스를 한번에 조회해오는 쿼리 문법인 msearch를 사용하다가 하나의 쿼리에서 여러 인덱스 결과를 한번에 받아올 수 있는 방법이 있는지 찾아보았습니다. 방법은 아래와 같습니다. 원래 msearch 문법 {"index" : "인덱스이름1"} {"query" : "쿼리"} {"index" : "인덱스이름2"} {"query" : "쿼리"} 이런식으로 쿼리를 전송하게 되면 결과로 받아오는 구조가 다음과 같이 나옵니다. 마지막에 비어있는 한줄은 msearch의 문법입니다. { "took": 19, "responses": [ { 인덱스이름1의 결과 목록 }, { 인덱스이름2의 결과 목록 } ] } 인덱스를 여러개 지정 하는 문법 {"index" : "인덱스이름1,인덱스이름2"} {"query" : "쿼리..
[Elasticsearch] 어떻게 공백을 포함한 문자열을 통째로 검색어로 사용할 수 있을까? Elasticsearch는 검색엔진으로 데이터를 저장할 때 키워드 단위 즉, 쉽게 말해서 단어 단위로 쪼개어 저장을 하게 되는데요. 이 때문에 검색어도 마찬가지로 단어 단위로 탐색이 됩니다. 만약에 검색하고자 하는 검색어에 공백이 포함되어 있는 경우 Elasticsearch에서는 기본적으로 default_operator라는 것이 설정 되어 있어서 OR 조건으로 적용되요. 예를 들어서 다음 쿼리를 통해 조회하는 경우에요. { "query" : { "query_string" : { "field": "name", "query": "apple orange" } } } 이렇게 검색하는 경우 name이라는 필드 안에 apple 또는(OR) orange 라는 키워드(문자)가 들어가있으면 위의 쿼리 결과로 나와요. 하..
[Elasticsearch] 업데이트 시 해당 document 존재여부에 따라 update(script) or create Elasticsearch(이하 ES)는 보통 쌓인 데이터들을 ES구조로 컨버팅해서 대용량의 데이터를 인덱싱하여 빠르게 찾아볼 수 있도록 하는데 많이 사용되는데 이번 프로젝트 같은 경우에는 ES를 DB 처럼 사용해보았습니다. ES에 바로 데이터를 insert, update, delete를 하는 로직을 짜보았는데요, 그러다가 update 과정에서 벽에 부딪혔는데 해결 방법을 찾아서 정리해보려고 합니다. update를 하는데 처음에 로직을 기존 RDB처럼 해당 문서의 ID로 조회하여 문서의 존재 여부를 판단하고 없으면 insert(ES에서는 create문)를 존재하는 경우 update문을 날리도록 하였습니다. 그런데 서로 다른 여러 서버에서 쿼리문을 날리다보니 조회하는 시점에는 없던 문서였는데 다른 서버에서는..
[docker] Elasticsearch와 kibana 설치 docker 설치 아래 명령어를 통해서 스크립트가 실행되고 알아서 리눅스 배포판을 인식해서 설치됩니다. # sudo wget -qO- https://get.docker.com/ | sh ※ root 권한으로 설치해야합니다. docker는 항상 root권한을 요구합니다. Elasticsearch 이미지 다운 # docker pull docker.elastic.co/elasticsearch/elasticsearch:6.4.3 Elasticsearch 컨테이너 실행 # docker run -p 9200:9200 -p 9300:9300 --name elastic -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.4.3 ..