2017-11-09 6 views
1

Ich versuche, einen Zeitfilter auf einem Text Eigenschaft zu tun, um sein inneres Schlüsselwort-Feldes auf Elastic 5.x nach dem neuen Standard Zugriff auf ...Elastic NEST mit Zeitfilter auf Textfeld mit innerem Stichwortfeld

I haben eine Eigenschaft wie diese:

{ 
    "foo": { 
    "type" "text", 
    "fields": { 
     "keyword": { 
     "type": "keyword", 
     "ignore_above": 256 
     } 
    } 
    } 
} 

Und ich bin den Code unten läuft mit dem inneren Stichwort Feld zu filtern ...

var searchResult = _elasticClient.Search<InvoiceResult>(x => x 
.Index("my_index") 
.Query(query => query 
    .Term(term => term 
    .Field(new Field("foo.keyword")) 
    .Value("TEST") 
) 
) 
); 

gibt es eine Möglichkeit, das gleiche Ergebnis mit dem zu erreichen, Modell- Klasse? Wenn ich den folgenden Code ausprobiere, verwendet er nie das Schlüsselwort inner field.

var searchResult = _elasticClient.Search<InvoiceResult>(x => x 
.Index("my_index") 
.Query(query => query 
    .Term(term => term 
    .Field(field => field.Foo) 
    .Value("TEST") 
) 
) 
); 

Prost!

Antwort

3

NEST has wirklich praktische Erweiterungsmethode für diesen Fall.

var searchResult = _elasticClient.Search<InvoiceResult>(x => x 
    .Index("my_index") 
    .Query(query => query 
     .Term(term => term 
      .Field(field => field.Foo.Suffix("keyword")) 
      .Value("TEST") 
     ) 
    ) 
); 

Hoffe, dass hilft.