为自动映射的附件字段指定分析器

Specifying the Analyzer for an auto mapped attachment field

使用 Nest,我有一个功能可以设置所有 Elasticsearch 文档字段和 analyzers/SearchAnalyzers。

其中一个字段是 Nest Attachment 对象。这用于附加 PDF,以便 PDF 的内容可以被 Elasticsearch 索引。

运行 附件字段上的“分析”Elasticsearch 请求显示它正在使用 'default' 分析器。

我想知道的是如何为此附件字段(自动映射)指定自定义分析器。

我想将 Attachment.Content 字段映射到名为“literalNameSynonymsAnalyzer”的分析器,因为该字段在解析并转换为纯英文文本后保存 PDF 的内容。

protected override TypeMappingDescriptor<HondaData> ConfigureDocumentMapping(TypeMappingDescriptor<HondaData> mapping)
        {
            return mapping
                .AutoMap()
                .Properties(prop => prop
                    .Text(text => text
                        .Name(name => name.Id)
                        .Analyzer("keyword"))
                    .Text(text => text
                        .Name(name => name.VehicleIds)
                        .Analyzer("keyword"))
                    .Text(text => text
                        .Name(name => name.Titles)
                        .Analyzer("english")
                        .SearchAnalyzer("literalNameSynonymsAnalyzer"))
                    .Text(text => text
                        .Name(name => name.FileContent)
                        .Analyzer("english")
                        .SearchAnalyzer("literalNameSynonymsAnalyzer"))
                    .Object<Attachment>(a => a
                        .Name(n => n.Attachment)
                        .AutoMap()));
        }

这是管道函数

protected Task CreateAttachmentPipeline()
        {
            return Client.PutPipelineAsync(
                "HondaPdfPipeline",
                p => p
                    .Processors(pr => pr
                        .Attachment<HondaData>(a => a
                            .Field(f => f.Base64FileContent)
                            .TargetField(f => f.Attachment))
                        .Remove<HondaData>(r => r
                            .Field(f => f.Base64FileContent))));
        }

Attachment映射的Content属性可以指定使用自定义分析器

protected override TypeMappingDescriptor<HondaData> ConfigureDocumentMapping(TypeMappingDescriptor<HondaData> mapping)
{
    return mapping
        .AutoMap()
        .Properties(prop => prop
            .Text(text => text
                .Name(name => name.Id)
                .Analyzer("keyword"))
            .Text(text => text
                .Name(name => name.VehicleIds)
                .Analyzer("keyword"))
            .Text(text => text
                .Name(name => name.Titles)
                .Analyzer("english")
                .SearchAnalyzer("literalNameSynonymsAnalyzer"))
            .Text(text => text
                .Name(name => name.FileContent)
                .Analyzer("english")
                .SearchAnalyzer("literalNameSynonymsAnalyzer"))
            .Object<Attachment>(a => a
                .Name(n => n.Attachment)
                .AutoMap()
                .Properties(pp => pp
                    .Text(t => t
                        .Name(n => n.Content)
                        .Analyzer("literalNameSynonymsAnalyzer")
                    )
                )
            )
        );
}