2016-12-23 3 views
1

В предыдущей версии Nest, я знал, как сделать эквивалент основного запроса эс матча с гнездом:elasticsearch 5.x: как сватают гнездо Поисковый запрос,

я создал индекс Exemple и отображение

запрос
PUT /base_well 
{ 
    "mappings": { 
     "person": { 
       "properties": { 
        "first_name":{ 
         "type": "string" 
        }, 
        "last_name":{ 
         "type": "string" 
        }, 
        "age":{ 
         "type": "integer" 
        } 
       } 
     } 
    } 
} 

POST /base_well/person 
{ 
    "first_name":"Adrien", 
    "last_name" : "Mopo", 
    "Age" : 21 
} 

POST /base_well/person 
{ 
    "first_name":"Polo", 
    "last_name" : "Apou", 
    "Age" : 36 
} 

ES работает на самом деле

POST /base_well/person/_search 
    { 
     "query": 
     { 
     "match":{ 
      "first_name":"Adrien"   
     } 
    } 
} 

этот запрос Elasticsearch дать мне эту answere:

{ 
    "took": 3, 
    "timed_out": false, 
    "_shards": { 
     "total": 5, 
     "successful": 5, 
     "failed": 0 
    }, 
    "hits": { 
     "total": 1, 
     "max_score": 0.2876821, 
     "hits": [ 
     { 
      "_index": "base_well", 
      "_type": "person", 
      "_id": "AVkq9PI5ybdSs0epy_Rb", 
      "_score": 0.2876821, 
      "_source": { 
       "first_name": "Adrien", 
       "last_name": "Mopo", 
       "Age": 21 
      } 
     } 
     ] 
    } 
} 

NEST эквивалент, который больше не работает:

public class Person 
{ 
    public string first_name {get;set;} 
    public string last_name { get; set; } 
    public int Age { get; set; } 
} 

//nest equivalent does not work anymore 
var uri = new Uri("http://localhost:9200"); 
var setting = new ConnectionSettings(uri); 
setting.DisableDirectStreaming(true); 
setting.DefaultIndex("base_well"); 
var Client = new ElasticClient(setting); 

var response = Client.Search<Person>(s => s.Query(p => p.Term(q => q.first_name, "Adrien"))); 
var tooks = response.Took; 
var hits = response.Hits; 
var total = response.Total; 

Это дает мне 0 документы результаты, 0 хиты

enter image description here

Вы знаете, как сделать это в последней версии?

+1

Если вы хотите выполнить запрос соответствия с помощью NEST, замените 'p.Term (..)' на 'p.Match (..)'. – Rob

+0

как это должно быть написано? –

ответ

2
var response = Client.Search<Person>(s => s.Query(p => p.Match(m => m.Field(f => f.first_name).Query("Marc"))));