Откуда вы получаете свои документы, зависит от используемой вами версии Nest. На странице критических изменений Nest 1.0:
Документы с метаданными
Когда вы выполняете поиск с помощью NEST 0.12, вы получаете QueryResponse<T>
с двумя способами перебора результатов. .Documents
— это IEnumerable<T>
, а .DocumentsWithMetaData
— это и IEnumerable<IHit<T>>
, в зависимости от ваших потребностей, один из них может быть проще в использовании.
Начиная с NEST 1.0 .DocumentsWithMetaData
теперь называется просто .Hits
.
Итак, учитывая ваш пример кода:
НЕСТ 0,12
result.Documents
result.DocumentsWithMetaData
НЕСТ 1.0
result.Hits
Самая большая разница со свойствами 0.12 заключается в том, что .Documents
— это просто набор результатов поиска, сопоставленный непосредственно с вашим типом OpinionDocumentIndexRecord
. В то время как .DocumentsWithMetaData
имеют дополнительные свойства Elasticsearch, такие как Highlights, Fields, Explanation, Type, доступные вместе со свойством Source, являющимся вашим OpinionDocumentIndexRecord
. То, что вам нужно или нужно, скорее всего, будет зависеть от ваших конкретных потребностей приложения/бизнеса.
Поэтому, если вы используете Nest 0.12.0 и вам нужно решение, которое легко переносится на Nest 1.0.0, я бы рекомендовал использовать .DocumentsWithMetaData
, а затем вы можете просто изменить его на .Hits
при обновлении клиента Nest.
Если вы действительно заботитесь только о OpinionDocumentIndexRecord
независимо от того, к какому свойству вы обращаетесь из результатов, вы можете использовать одно из следующих:
var myData = new List<OpinionDocumentIndexRecord>();
foreach (var hit in results.DocumentsWithMetaData)
//foreach (var hit in results.Hits) //for Nest 1.0
{
myData.Add(hit.Source);
}
return myData;
Надеюсь это поможет.
person
Paige Cook
schedule
30.04.2014