2015-01-20 3 views
-1

Я пытаюсь извлечь данные из класса SearchResponse с указанным кодом:Невозможно получить данные из упругого поиска SearchResponse

SearchHits searchHits = searchResponse.getHits(); 
for (SearchHit searchHit : searchHits) { 
    SearchHitField title = searchHit.field("title"); 
    System.out.println(title.getValue().toString()); 
} 

Но я получаю исключение нулевого указателя в функции title.getValue(). «Название» поле, безусловно, есть, и я могу подтвердить, что напечатав ответ поиска, который дает следующий результат:

{ 
    "took" : 13, 
    "timed_out" : false, 
    "_shards" : { 
    "total" : 5, 
    "successful" : 5, 
    "failed" : 0 
    }, 
    "hits" : { 
    "total" : 1, 
    "max_score" : 1.0, 
    "hits" : [ { 
     "_index" : "myIndex", 
     "_type" : "myTye", 
     "_id" : "5c849b0f-d72d-4cc9-9b8c-e1201f888f94", 
     "_score" : 2.4181843, 
     "_source":{"esId":"100200153", "title":"Book 1"} 
    } 
} 

Я знаю, что я могу получить данные с searchHit.getSource(), но мне интересно, почему вышеупомянутое решение не работает.

ответ

0

Я думаю, вы должны указать .fields(fields) в запросе, чтобы иметь возможность получить доступ к разделу fields.

Например, если у вас есть запрос, как это:

{ 
    "query": { 
    "match_all": {} 
    } 
} 

вы получите в hits разделе результата некоторые поля (_id, _type ..., _source). Но, если у вас есть что-то вроде этого:

{ 
    "query": { 
    "match_all": {} 
    }, 
    "fields": ["my_field"] 
} 

вы получите обратно другой результат:

"hits": { 
     "total": 2, 
     "max_score": 1, 
     "hits": [ 
     { 
      "_index": "test_malformed", 
      "_type": "test", 
      "_id": "1", 
      "_score": 1, 
      "fields": { 
       "my_field": [ 
        "whatever" 
       ] 
      } 
     }, 
     ... 

Вы замечаете там, в hits у вас есть fields, где поле указано в запросе поиска является возвращается.

0

Похоже, вы почти там. На каждом ударе вместо получения заголовка вы получаете объект _source, затем поле заголовка из этого исходного объекта.

+0

К сожалению, он не работает – salvador

Смежные вопросы