2017-09-01 4 views
0

Imaginez que j'ai ma requête comme:Append .keyword à FIELDNAME dans NEST ElasticSearch requête

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

la requête de sortie (de DeubgInformation) sera comme:

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

how'ever cela ne travail. il faut que le ".keyword" soit ajouté à la fin du nom d'utilisateur. La requête ci-dessous fonctionne, mais je ne peux pas générer par NEST:

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

toute idée comment faire NEST pour ajouter le « .keyword » à la fin du nom de domaine? (Bien sûr à la mode Courant, sinon w.Field("userName.keyword") travaux)

Répondre

2

Le besoin appel Suffix() pour faire partie de l'expression d'accès membre

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