将 .keyword 附加到 NEST elasticsearch 查询中的字段名

Append .keyword to fieldname in NEST elasticsearch query

假设我的查询是:

.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": []
        }
    }
}

然而这不起作用。它需要在用户名末尾附加“.keyword”。下面的查询有效,但我无法通过 NEST 生成它:

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

知道如何让 NEST 在字段名称末尾添加“.keyword”吗? (当然是流利的方式,否则 w.Field("userName.keyword") 有效)

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)
            )
        )
    )
));