Skip to main content
 首页 » 编程设计

c#之带有 Nest 和 Field Suffix 的 MultiMatch 查询

2024年06月03日25虾米哥

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

希望对您有所帮助。