2016-11-23 2 views
0

Ich verwende Elasticsearch 5.0.1, und ich verwende meinen Code unter .NET 4.5.2. Ich benutze NEST 5.0 rc lib.Elasticsearch Abfrage mit einer Liste von Strings in Kriterien. Nest 5.x

Ich habe eine Klasse, die eine Liste der Zeichenfolge enthält.

public List<string> LastPagesViewed { get; set; } 

Ich Mapping, das clase AutoMap wie folgt aus:

.Mappings(m => m.Map<VisitorTest>(map => map.AutoMap())) 

Was ich tun möchte, ist alles, um das Dokument Abfrage, die auf ‚LastPagesViewed‘ Eigenschaft eine oder mehrere URLs enthält.

ich eine Suche wie dies tue:

.Query(q => q 
.Terms(c => c 
    .Name("named_query") 
    .Field(p => p.LastPagesViewed) 
    .Terms(new List<string> { "url1", "url2" })) 

Aber es funktioniert nicht. Ich habe auch versucht, nur einen Teil der URL wie "google" (wenn die URL ist http://www.google.com) aber das gleiche Ergebnis zu suchen.

Ich versuchte dies mit einer Liste von Ints (anstelle von URLs) und es funktioniert, also was ich hier fehlt?

Antwort

0

Endlich fertig !. Das Problem war, dass ich den Einfluss des Analysators bei der Terminologiesuche nicht berücksichtigt habe. Sobald ich die Abfrage geändert habe, um eine Übereinstimmung zu verwenden, funktioniert alles wie erwartet.

Die neue Abfrage wird so aussehen:

.Query(q => q.Match(mq => mq.Field(p => p.LastPagesViewed.First()).Query("http://www.google.com"))) 
Verwandte Themen