具有嵌套和字段后缀的多重匹配查询

本文关键字:查询 后缀 嵌套 字段 | 更新日期: 2023-09-27 17:56:09

使用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)
...

希望对您有所帮助。