带有 Nest 和 Field Suffix 的 MultiMatch 查询

MultiMatch query with Nest and Field Suffix

使用 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 的查询时强类型后缀,或者我必须使用魔术字符串?

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

这是修改查询的方法:

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

希望对您有所帮助。