본문 바로가기

전체 글

(96)
Elasticsearch + spirng boot 연동(DELETE) 오늘은 자바에서 Elasticsearch 데이터를 삭제해보려고 한다. 저번 실습에서 추가한 DocumentApi.java 에 삭제를 요청하는 기능을 추가한다. DocumentApi.java private Boolean _bulkDocumentWithBulkProcessor(ArrayList bulkList, int bulkActions) { boolean terminated = false ; BulkProcessor bulkProcessor = _getBulkProcessor(bulkActions); for(BulkData data : bulkList) { if(data.getActionType().equals(BulkData.Type.CREATE)){ bulkProcessor.add(new IndexR..
Elasticsearch + spirng boot 연동(INSERT) 저번에 인덱스 해당 id로 데이터를 조회까지 해봤다. 오늘은 item 인덱스에 데이터를 INSERT 해보려고 한다. elasticsearch 에 데이터를 INSERT 하기 위해 설정 파일들을 만들었다. 데이터를 여러개에 List에 담아서 보내기 위해 Bulk를 활용한다. IndexApi.java @Slf4j public class IndexApi { private RestHighLevelClient client; public IndexApi(RestHighLevelClient client) { this.client = client; } public boolean createIndex(String indexName) { CreateIndexRequest request = new CreateIndexRequ..
Elasticsearch + spirng boot 연동(SELECT) 회사에서 spring boot 에 elasticsearch 7.14 버전을 연동하고 있어 집에서도 실습해보고싶었다. 개발환경: inteli J , java 11 , elasticsearch 7.14.2 , spring boot 일단 간단하게 elasticsearch 에서 테스트로 넣은 index 데이터를 조회해보려고 한다. ES에서 Spring boot 연동하는 방식은 여러가지 있지만 그중에 직장에서도 사용하고 있는 동일한 방법으로 해봤다. Java High Level REST Client 방식이다. High Level REST Client 는 HighLevelRestClient 로 지원하며 엘라스틱 서치에 접근할 때 리퀘스트를 빌더로 만들어서 API 통신 하는 방식이다. 리스폰스도 이미 만들어진 클래스..
Elasticsearch Query DSL 정확값 쿼리 - Exact Value Query bool : filter Elasticsearch는 정확도를 고려하는 풀 텍스트 외에도 검색 조건의 참/거짓 여부만 판별해서 결과를 가져오는 것이 가능하다. 풀 텍스트와 상반되는 이 특성을 정확값이라고 하는데 정확히 일치 하는지 여부 만을 따지는 검색이다. Exact Value 에는 term, range 와 같은 쿼리들이 속한다. 스코어를 계산하지 않기 때문에 보통 bool 쿼리의 filter 내부에서 사용하게 된다. 테스트 데이터 POST sport_5/_bulk {"index":{"_id":1}} {"message":"The quick brown fox"} {"index":{"_id":2}} {"message":"The quick brown fox ju..
Elasticsearch Query DSL Bool 복합 쿼리 - Bool Query query_string 쿼리는 여러 조건을 조합하기에는 용이하지만 옵션이 한정되어 있다. 본문 검색에서 여러쿼리를 조합하기 위해서는 상위에 bool 쿼리를 사용하고 그 안에 다른 쿼리들을 넣는 식으로 사용이 가능하다. bool 쿼리는 4개의 인자를 가지고 있으며 그 인자 안에 다른 쿼리들을 배열로 넣는 방식으로 동작한다. must : 쿼리가 참인 도큐먼트들을 검색한다. must_not : 쿼리가 거짓인 도큐먼트들을 검색합니다. should : 검색 결과 중 이 쿼리에 해당하는 도큐먼트의 점수를 높입니다. filter : 쿼리가 참인 도큐먼트를 검색하지만 스코어를 계산하지 않는다. must보다 검색 속도가 빠르고 캐시이 가능하다. 명령어 GET /_search {..
Elasticsearch Query DSL 풀 텍스트 쿼리 - Full Text Query 인덱스를 하나 생성해서 테스트 데이터를 넣는다. PUT sport_3 GET sport_3/_search POST sport_3/_bulk {"index":{"_id":1}} {"message":"soccer is good"} {"index":{"_id":2}} {"message":"soccer is good and great"} {"index":{"_id":3}} {"message":"soccer is very good and great"} {"index":{"_id":4}} {"message":"soccer and baseball"} {"index":{"_id":5}} {"message":"baseball and basketball"} match_all..
Elasticsearch 검색 API 개발환경: elasticsearch 8.12.2 , kibana 8.12.2 Elasticsearch 쿼리를 통한 검색기능 검색은 인덱스 단위로 이루어진다. 실습은 오늘은 git bash가 아닌 kibana에서 진행했다. 기본 검색 명령어 GET sport/_search 결과 URI 검색 _search 뒤에 q 파라미터를 사용해서 검색어를 입력할 수 있다. 명령어 : sport 인덱스에서 soccer 라는 값을 검색한다. GET sport/_search?q=soccer 결과 결과를 보면 hits.total.value 부분에 문서의 개수가 표시된다. 그 안의 hits:[ ] 구문 안에 배열로 정확도 높은 문서 10개가 나타난다. 두 개의 검색어 soccer , goodgood 를 AND 조건으로 검색하는 ..
Elasticsearch CRUD Elasticsearch GET, POST, PUT, DELETE 를 먼저 실습해보고자 한다. 실습환경: elasticsearch 8.12.2 , gitbash 1. Index 만들기 명령어 $ curl -XPUT http://localhost:9200/sport?pretty 결과 2. Index 조회하기 명령어 $ curl -XGET http://localhost:9200/sport?pretty 결과 pretty는 search 의 결과를 보기좋게 출력해주는 파라미터이다. 3. Index 삭제하기 명령어 $ curl -XDELETE http://localhost:9200/sport?pretty 결과 다시 조회 해보면 아래의 이미지와 같이 404 에러를 띄우는걸 확인할 수 있다. 4. Document 만들..