Методы T
в NEST, такие как Search<T>()
, используются для нескольких целей:
- Предоставить строго типизированный доступ через лямбда-выражения для свойств
T
- В случае, когда API возвращает документ JSON, такой как
Search<T>()
, возвращающий первоначально проиндексированный документ в поле _source
каждого попадания, T
будет типом, к которому этот документ десериализован.
Если вам не нужно или не нужно какое-либо из этих поведений, вы можете использовать object
или dynamic
для T
и указывать строки для таких значений, как Field
. Затем вам нужно решить, как читать это POCO; в случае dynamic
возвращаемый тип является внутренним JObject
подобным типом, поэтому вы можете получить к нему динамический доступ.
Чтобы выполнить поиск без типа в URI, вы можете использовать
var searchResponse = client.Search<object>(s => s
.AllTypes()
.Query(q => q
.Match(m => m
.Field("some_field")
.Query("match query")
)
)
);
, который приведет к поисковому запросу, например
POST http://localhost:9200/profiles/_search
{
"query": {
"match": {
"some_field": {
"query": "match query"
}
}
}
}