简体   繁体   English

elasticsearch 5.x:如何使嵌套匹配查询搜索

[英]elasticsearch 5.x : how make a nest match query search

In the previous version of Nest , i knew how to do the equivalent of a basic es match query with nest: 在上一版的Nest中,我知道如何用nest做等效的基本es匹配查询:

I created an exemple index and mapping 我创建了一个示例索引和映射

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 request works actually ES请求实际上有效

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

this Elasticsearch request give me this answere: 这个Elasticsearch请求给我这个答案:

{
   "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 equivalent that does not work anymore: 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;

It gives me 0 documents results , 0 hits 它给了我0文档结果,0点击

在此处输入图片说明

Do you know how to do that in the last version? 您知道在最新版本中该怎么做吗?

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM