2016-08-08 1 views
0

아래와 같이 URI 기반 쿼리를 실행하려고합니다. 그러나 나는 지나가는 검색 매개 변수의 영향을 보지 못합니다. 또한 _source = false를 비활성화하려고합니다. 쿼리를 도와 주시겠습니까? Java.net 패키지를 사용하여 동일한 작업을 수행하기 위해 java를 사용하고 있습니다. 이 쿼리는 내가 검색 한 매개 변수에 관계없이 모든 것을 반환합니다.소스 필드가없는 Elasticsearch URI 기반 검색 쿼리

URI : "http://localhost:9200/twitter/twitter/_search?updatedBy=XX&node=YY"

자바 코드 :

String charset = "UTF-8"; 
      String updatedBy = "XX"; 
      String node = "YY"; 

    String query = String.format("updatedBy:%s&nodeId:%s", 
      URLEncoder.encode(updatedBy, charset), 
      URLEncoder.encode(nodeId, charset)); 
    System.out.println(searchEsUrl + "?q=" + query); 

    URLConnection connection = new URL(searchEsUrl + "?q=" + query).openConnection(); 
    connection.setRequestProperty("Accept-Charset", charset); 

답변

1

이 시도 대신

String query = String.format("updatedBy:%s+AND+nodeId:%s", 
     URLEncoder.encode(updatedBy, charset), 
     URLEncoder.encode(nodeId, charset)); 
URLConnection connection = new URL(searchEsUrl + "?_source=false&q=" + query).openConnection(); 

문제가 q= 매개 변수에 전송되는 어떤 쿼리 문자열을 따를 필요가 있었다 쿼리 syntax rules이고 두 제약 조건은이 아닌 AND 연산자를 사용하여 AND 연산됩니다. 이 같은210 : updatedBy:XX AND nodeId:YY

당신이 구축하고자하는 URI 따라서이다 : 빠른 응답을위한

"http://localhost:9200/twitter/twitter/_search?q=updatedBy:XX AND nodeId:YY" 
+0

감사합니다. 이것은 완벽하게 작동합니다. 당신이 말했듯이 나는 AND 대신에 &를 사용했다. –

+0

좋았어, 다행이야! – Val

+0

이제 제대로 작동합니다. 심지어 크기 매개 변수를 전달할뿐만 아니라 소스를 해제 할 수 있습니다. 나는 그것을 대답으로 받아 들였다. –