2013-07-17 7 views
4

이제 필드에서 ID를 검색하고 싶습니다. elasticsearch에서 ID 검색

builder.startObject().startObject(TYPE_SERIES).startObject("properties"); 

    builder.startObject(ID) 
      .field("type", "long") 
      .field("store", "yes") 
      .field("index", "analyzed") 
      .field("analyzer", "test_analyzer") 
      .endObject(); 

    builder.startObject(TITLE) 
      .field("type", "string") 
      .field("store", "yes") 
      .field("index", "analyzed") 
      .field("analyzer", "test_analyzer") 
      .field("boost", "10") 
      .endObject(); 

나는이 같은 ID를 검색하려고 :

.setQuery(QueryBuilders.multiMatchQuery(query, 
         ID, TITLE)) 

BTW, 내가 ID로 결과를 얻을 수 있습니다, 대신 내가 제목으로 검색 할 수 없습니다. 난 단지 결과를 얻으려는 ID로 검색합니다.

그래서 이렇게 변경했습니다. MultiSearchResponse를 사용하여 두 명의 애들을 실행하려고했습니다.

하나는 다른 하나는 불행하게도, 난 그냥 제목이나 설명과 함께 결과를 얻을

.setQuery(QueryBuilders.multiMatchQuery(query, 
              TITLE,DESCRIPTION)) 

입니다

.setQuery(QueryBuilders.idsQuery(TYPE).ids(query)) 

입니다. ID를 검색하면 결과를 얻을 수 없습니다. 내가 좋아하는 것

================ 내가 ID와 결과를 얻으려면이

curl -XGET localhost:9200/test/series/99 

처럼 실행합니다. 불행히도, 나는이 코드를 JAVA API로 만드는 방법을 잘 모른다.

알려 주시기 바랍니다. 감사.

+0

당신을 위해 무엇을 검색하고 어떤 문서 봐. 또한 get mapping api를 사용하여 제출 된 매핑이 어떻게 보이는지 확인하십시오. 그러면 기대 한 결과가됩니다. – javanna

+0

기존 데이터베이스 테이블에서 제목, ID, 설명을 검색하고 싶습니다. 이제 용어로 제목, 설명을 검색 할 수 있습니다. 그러나 나는 이드를 찾기가 어렵다. multiMatchQuery에 id 필드를 추가하면 id에서 결과를 얻을 수 있지만 다른 필드의 결과가 없습니다. 이것은 내 문제입니다. – Soo

+0

@Soo, 실행하고있는 상황을 볼 수있는 완벽한 예제를 제공 할 수 있습니까? – imotov

답변

3

검색 할 수있는 _id 필드가 있습니다. 따라서 http://localhost:9200/_search?q=_id:99+AND+_type:series+AND+_index:test 또는 http://localhost:9200/test/series/_search?q=_id:99의 컬이 트릭을 수행해야합니다.

3

이전 사람들이 말했듯이, 완전한 예가 도움이 될 것입니다.

.setQuery(QueryBuilders.idsQuery("series").addIds("99")); 

또는 좀 더 완성 : :하지만 이제 당신이 찾고있는 문서 유형이 "시리즈"라고하자 모른 채 말을 하드

SearchResponse esResponse = esClient.prepareSearch("test") 
       .setQuery(QueryBuilders.idsQuery("series").addIds("99")) 
       .execute().actionGet(); 
관련 문제