Próbuję napisać zapytanie, które zwróci mi tylko jedno z pól. W tej chwili przechowuję plik filePath pliku i zawartość pliku, a podczas wyszukiwania chcę przeszukać zawartość, ale zwracam tylko właściwość filePath.ElasticSearch NEST zwraca określone pola
Zaczynam się z tym stwierdzeniem:
var searchResults = client.Search<File>(
s => s.Query(q => q.Wildcard(w => w.Value("*" + genre + "*").OnField("fileContents"))).AllIndices().AllTypes());
Które zwraca wyniki w searchResults.Documents
same pola i dodanie do niego:
var searchResults = client.Search<File>(
s => s.Query(q => q.Wildcard(w => w.Value("*" + genre + "*").OnField("fileContents"))).AllIndices().AllTypes().Fields(f=>f.filePath));
I to nie ma nic w searchResults.Documents
ale pokazuje liczba trafień poprawnie przy użyciu searchResults.Hits.Total
.
klasa plik jest po prostu:
public class File
{
public string filePath { get; set; }
public string fileContents { get; set; }
}
ta generuje następujące żądania json:
{
"fields": [
"filePath"
],
"query": {
"wildcard": {
"fileContents": {
"value": "*int*"
}
}
}
}
Które gdy prowadził w Sense zwraca wyniki, a kiedy robi searchResults.Hits.Total
daje liczbę trafień.
Jednak nie ma zapisów w searchResults.Document
IEnumerable.
Czy jest inny sposób, w jaki powinienem zwrócić jedno konkretne pole?
znalazłem rozwiązanie. Tutaj możesz zobaczyć go w innym poście. http://stackoverflow.com/a/32817133/2399279 – ozzimpact