Получить основные моменты от ответа Flexiblesearch в NEST asp.net mvc - PullRequest
0 голосов
/ 01 мая 2019

У меня проблема с получением ярких результатов от ответа эластичного поиска в 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; }
    }

...