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

insrf1ej  于 2021-07-15  发布在  ElasticSearch
关注(0)|答案(1)|浏览(288)

使用nest,我有一个函数可以设置所有elasticsearch文档字段和analyzers/searchanalyzers。
其中一个字段是嵌套附件对象。它用于附加pdf,以便可以通过elasticsearch对pdf的内容进行索引。
在附件字段上运行“analyze”elasticsearch请求表明它正在使用“default”分析器。
我想知道的是如何为这个附件字段指定一个自定义分析器(它是自动Map的)
我想将attachment.content字段Map到名为“literalnamesynonymanalyzer”的分析器,因为这是一个在解析并转换为纯英语文本后保存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))));
        }
wqsoz72f

wqsoz72f1#

这个 Content 财产 Attachment 可以指定Map以使用自定义分析器

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")
                    )
                )
            )
        );
}

相关问题