У меня проблема с получением ярких результатов от ответа эластичного поиска в NEST.Я объявил класс SearchResult для хранения возвращенных документов.Он работает нормально, и я могу получить документы.Однако я хочу получить доступ к полям Highlights, поэтому я создал класс HighlightList.Ожидаемое возвращение Json следующим образом:
{
"Total": 2515,
"Page": 1,
"Documents": [
{ document 1},
{ document 2},
{ document 3},
],
"ElapsedMilliseconds": 2,
"HighlighList": [
{ highlight 1},
{ highlight 2},
{ highlight 3},
]
}
Я понятия не имею, как получить основные моменты от ответов NEST.Мой текущий исходный код выглядит следующим образом, используя Elasticsearch и NEST 7.0alpha1
public ActionResult Search(string query, int page=1, int pageSize=10)
{
ElasticClientProvider ESProvider = new ElasticClientProvider("findings");
var client = ESProvider.Client;
var searchResponse = client.Search<FindingList>(s => s
.Query(q => q
.MultiMatch(c => c
.Query(query)
)
)
.Size(pageSize)
.From(page - 1)
.Highlight(h => h
.Fields(f => f.Field("*"))
)
);
var responses = searchResponse;
var result = new SearchResult<FindingList>
{
Total = (int)responses.Total,
Page = page,
Documents = responses.Documents,
ElapsedMilliseconds =Convert.ToInt32(responses.Took),
//get highlights here
};
return Json(result, JsonRequestBehavior.AllowGet);
}
public class SearchResult<T>
{
public int Total { get; set; }
public int Page { get; set; }
public IEnumerable<T> Documents { get; set; }
public int ElapsedMilliseconds { get; set; }
public HighlightList<T> HighlighList { get; set; }
}
public class HighlightList<T>
{
public string DocumentId { get; set; }
public string Field { get; set; }
public IEnumerable<T> Highlights { get; set; }
}