使用Nest和Field Suffix进行MultiMatch查询

时间:2015-06-15 10:11:22

标签: c# elasticsearch nest

使用Elasticsearch我有一个带后缀的字段 - 字符串字段带有.english后缀,上面有英文分析器,如下图所示

...
"valueString": {
    "type": "string",
    "fields": {
        "english": {
             "type": "string",
             "analyzer": "english"
        }
    }
}
...

以下查询代码段无法编译,因为ValueString没有English属性。

...
sh => sh
    .Nested(n => n
        .Path(p => p.ScreenData)
            .Query(nq => nq
                .MultiMatch(mm => mm
                    .Query(searchPhrase)
                    .OnFields(
                        f => f.ScreenData.First().ValueString,
                        f => f.ScreenData.First().ValueString.english)
                    .Type(TextQueryType.BestFields)
                )
            )
        )...

有没有办法在NEST中查询时强烈输入后缀,还是必须使用魔术字符串?

1 个答案:

答案 0 :(得分:3)

您是否尝试使用扩展方法Suffix

这是您修改查询的方法:

...
.OnFields(
    f => f.ScreenData.First().ValueString,
    f => f.ScreenData.First().ValueString.Suffix("english"))
.Type(TextQueryType.BestFields)
...

希望它有所帮助。