2014-11-17 2 views
2

자바 API를 사용하여 Elasticsearch와 상호 작용하지만 일반적으로 문서 및 예제의 대부분은 원시 curl + javascript/json을 사용하여 손실로 남겨 둡니다. 이를 Java API와 동등한 것으로 변환하는 방법에 대해 설명합니다.Elasticsearch curl + json 예제에 해당하는 Java API를 찾는 방법

그래서 내가 궁금해 한 것은 Elasticsearch Java 클라이언트 API가 필요할 때 "기본"json으로 드롭 할 수있는 방법을 제공하는지 여부입니다. 분명히 내 자신의 HttpClient를 만들고 자바에서 컬 스타일의 호출을 실행할 수 있지만, 그렇게하기 전에 Elasticsearch에 이미 더 우아한 것이 있는지 궁금해했다.

+0

자바 API 설명서가 도움이되지 않습니까? http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/index.html – Ashalynd

+0

@Ashalynd 아니요, Java API 설명서가 제 질문에 대한 대답이 아니기 때문에 여기에 왔습니다. – Magnus

답변

3

그것은 문제의 자바 API에 따라 다르지만 대부분의 경우, 대답은 느슨하게 예이다 : (일반적으로 setSource를 호출하거나 ActionRequestBuilder) 적절한 ActionRequestsource(String) method에 대한

봐. 당신이 SearchRequest와 관련된 JSON 쿼리를 보내고 싶다면

는 예를 들어, 당신은 할 수있는 다음과 같은 : 그것은 확실히 편리하지만

SearchRequest request = 
    Requests.searchRequest("my-index1", "my-index2") 
      .types("my-type1", "my-type2") 
      .source("{\"query\":{\"match\":{\"user\":\"xyz\"}}}"); 

SearchResponse response = client.search(request).actionGet(); 

, 이것은 아마도 최고의 생산보다는 디버깅을 위해 사용되는 암호.

+0

감사합니다. 문서를 통해 원시 쿼리 (집계 포함)를 제공 할 수있는 방법이 있다는 것을 절대적으로 분노하게합니다. client.prepareSearch() 방법을 사용하면 작동하는 것처럼 작동하지만 집계를 반환하지 않습니다. – SoWeLie

0

유용 할 것이다 :이 https://github.com/spring-projects/spring-data-elasticsearch 당신이 ElasticsearchRepository을 활용하기 때문에 자신 만의 저장소를 구축하고 @query 주석의 사용을 만들 수 있습니다.

public interface CustomRepository extends ElasticsearchCrudRepository<CustomEntity, Long> { 
    @Query("{\"match_all\": {}}") 
    List<CustomEntity> findAllPersons(); 
    // prefix Query 
    @Query("{\"bool\" : {\"should\" : [{\"prefix\" : {\"lastName\" : \"?0\"}}, {\"prefix\" : {\"firstName\" : \"?0\"}}]}}") 
    List<CustomEntity> findByLastNameOrFirstNameStartsWith(String prefix); 
} 
관련 문제