2017-09-01 254 views
0

想象我有我的查询为:追加.keyword巢elasticsearch查询字段名

.Query(query => 
      query.Bool(b => b.Must(m =>  
       m.Wildcard(w => w.Field(f => f.userName).Value(string.Format("*{0}*", searchModel.username).Suffix("keyword"))) 
))); 

输出查询(从DeubgInformation)将是这样的:

{ 
    "query": { 
     "bool": { 
      "must": [{ 
        "wildcard": { 
         "userName": "*alex*" 
        } 
       } 
      ], 
      "must_not": [], 
      "should": [] 
     } 
    } 
} 

how'ever这不工作。它需要在用户名后加上“.keyword”。下面的查询工作,但我无法通过NEST生成它:

{ 
    "query": { 
     "bool": { 
      "must": [{ 
        "wildcard": { 
         "userName.keyword": "*alex*" 
        } 
       } 
      ], 
      "must_not": [], 
      "should": [] 
     } 
    } 
} 

任何想法如何做窝在字段名的末尾添加了“.keyword”? (当然在流利方式,否则w.Field("userName.keyword")作品)

回答

2

Suffix()呼叫需要被成员访问表达式的一部分

.Query(query => query 
    .Bool(b => b 
     .Must(m => m 
      .Wildcard(w => w 
       .Field(f => f.userName.Suffix("keyword")) 
       .Value(string.Format("*{0}*", searchModel.username) 
      ) 
     ) 
    ) 
));