본문 바로가기
ElasticSearch

Elasticsearch Getting started

by Salt-Fn 2024. 10. 2.

Elasticsearch Java Client 문서의 번역입니다. GPT를 이용해 번역하였고 잘못된 부분이 있을수도 있습니다. 잘못된 부분은 댓글로 달아주시면 수정하겠습니다. 감사합니다.

https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/8.14/getting-started-java.html

특징

• 모든 Elasticsearch API에 대해 강한 타입의 요청과 응답을 제공합니다.

• 모든 API의 블로킹(동기) 및 비동기 버전을 제공합니다.

• 복잡한 중첩 구조를 생성할 때 간결하면서도 읽기 쉬운 코드를 작성할 수 있도록 유창한 빌더(fluent builder)와 함수형 패턴을 사용합니다.

Jackson이나 JSON-B 구현체와 같은 객체 매퍼를 사용하여 애플리케이션 클래스와의 매끄러운 통합을 제공합니다.

HTTP 연결 풀링, 재시도, 노드 검색 등 모든 전송 계층의 문제를 처리하는 Java Low Level REST Client와 같은 HTTP 클라이언트에 프로토콜 처리를 위임합니다.

시작하기

이 페이지에서는 Java 클라이언트 설치 프로세스를 안내하고, 클라이언트를 인스턴스화하는 방법과 이를 사용하여 기본 Elasticsearch 작업을 수행하는 방법을 보여줍니다.

요구사항

• 자바 8버전 이상

• 애플리케이션 클래스를 Elasticsearch API와 원활하게 통합할 수 있게 해주는 JSON 개체 매핑 라이브러리입니다. 아래 예는 Jackson과의 사용법을 보여줍니다.

설치

• 애플리케이션 클래스를 Elasticsearch API와 원활하게 통합할 수 있게 해주는 JSON 개체 매핑 라이브러리입니다. 아래 예는 Jackson과의 사용법을 보여줍니다.

dependencies {
    implementation 'co.elastic.clients:elasticsearch-java:8.14.3'
    implementation 'com.fasterxml.jackson.core:jackson-databind:2.17.0'
}

Gradle 프로젝트에서 설치 by using Jackson

Operations

이 세션에서는 Elasticsearch의 기본적이고 가장 중요한 작업을 안내합니다. 더 많은 작업과 고급 예제를 보려면 Java API 클라이언트 사용페이지를 참조하세요.

index 생성

esClient.indices().create(c -> c
    .index("products")
);

문서 색인

Product product = new Product("bk-1", "City bike", 123.0);

IndexResponse response = esClient.index(i -> i
    .index("products")
    .id(product.getSku())
    .document(product)
);

logger.info("Indexed with version " + response.version());

문서 조회

GetResponse<Product> response = esClient.get(g -> g
    .index("products") // 1
    .id("bk-1"),
    Product.class      // 2
);

if (response.found()) {
    Product product = response.source();
    logger.info("Product name " + product.getName());
} else {
    logger.info ("Product not found");
}

1. 인덱스 이름과 식별자가 포함된 조회 요청입니다.

2. 타켓 클래스를 적습니다. 여기서는 Product class입니다.

문서 검색

String searchText = "bike";

SearchResponse<Product> response = esClient.search(s -> s
        .index("products")
        .query(q -> q
            .match(t -> t
                .field("name")
                .query(searchText)
            )
        ),
    Product.class
);

Java clinet를 이용해 단일 match 쿼리를 생성하는 방법입니다.

문서 업데이트

Product product = new Product("bk-1", "City bike", 123.0);

esClient.update(u -> u
        .index("products")
        .id("bk-1")
        .upsert(product),
    Product.class
);

 

 

새 필드를 추가하기 위해 문서를 업데이트 하는 방법입니다.

문서 삭제

esClient.delete(d -> d.index("products").id("bk-1"));

index삭제

esClient.indices().delete(d -> d
    .index("products")
);