2017-02-01 3 views
0

Ich habe das folgende Dokument:Elasticsearch Abfrage funktioniert nicht

{ 
     "_index": "taskmanager", 
     "_type": "tasks", 
     "_id": "AVn4vhIKiS68kYrc2Xp0", 
     "_score": 0.8784157, 
     "_source": { 
      "Id": 2, 
      "Title": "Hello World", 
      "Description": "Description example", 
      "PublishDate": "2017-01-29T15:06:04", 
      "IsCompleted": true 
     } 

kann ich bekam die Liste der Dokumente, die die Abfrage ausgeführt:

var hits = elasticClient.Search<Task>(s => s); 

Aber ich habe nichts versucht, Dokumente zu erhalten, die enthält 'Welt'.

var hits = elasticClient.Search<DalTask>(s => s 
       .Type("tasks") 
       .Query(q => q 
        .Match(m => m 
         .Field(p => p.Title).Query("world") 
        ) 
       ) 
      ).Hits; 

Wo ist mein Fehler? Ps.s. Mein Index ist auf "taskmanager" eingestellt.

+0

scheint in Ordnung zu sein. Können Sie dies debuggen und teilen, was die Abfrage ist, die erstellt wird. Sie können eine schnelle Ansicht des Objekts 'Hits' erstellen, um die Abfrage zu erhalten. – pratikvasa

+0

können Sie Ihr Schema und Einstellungen für Ihren Index freigeben – user3775217

Antwort

1

standardmäßig NEST Kamel Fälle C# POCO Eigenschaftsnamen, wenn die Serialisierung sie Dokument Feldnamen in der Anforderung an Elasticsearch, so

.Field(p => p.Title) 

werden

"title" 

in der Anfrage. Betrachtet man die _source in der Antwort, die Sie gepostet haben, sieht es so aus, als ob Ihre Feldnamen Pascal-case sind, daher ist die Umhüllung des Feldnamens in der Suchanfrage anders und wird nicht übereinstimmen.

Sie können ändern, wie NEST Namen C# POCO Eigenschaft serialisiert von .DefaultFieldNameInferrer(Func<string, string>) Wechsel auf ConnectionSettings

var pool = new SingleNodeConnectionPool(new Uri("http://localhost:9200")); 
var connectionSettings = new ConnectionSettings(pool) 
    // serialize POCO property names verbatim 
    .DefaultFieldNameInferrer(s => s); 

var client = new ElasticClient(connectionSettings); 
Verwandte Themen