首页 > 解决方案 > 嵌套中的 rawquery 弹性搜索查询 - 未填充字段

问题描述

这工作正常:

var rawQuery = @"
    {
        ""query_string"": {
             ""query"": ""hello world""
             ,""default_operator"": ""AND""
        }
    }
";

var searchResponse = client.Search<Doc>(new SearchRequest
{
    Query = new RawQuery(rawQuery), Size = 1000
});

不幸的是,除了 Id 之外,没有填充 POCO Doc 的任何字段。任何想法为什么会这样?

PS:

根据要求提供更多(简化)详细信息

public class Doc
{
    public string Id { get; set; }
    public string FileName { get; set; }
    public string FileExtension { get; set; }
    public string Content { get; set; }
    public Attachment Attachment { get; set; }
}

public static void CreateIndex(ElasticClient client, string indexName)
{
    var createIndexResponse = client.Indices.Create(indexName, c => c
    .Settings(s => s
        .Analysis(a => a
        .Analyzers(ad => ad
            .Custom("windows_path_hierarchy_analyzer", ca => ca
            .Tokenizer("windows_path_hierarchy_tokenizer")
            )
        )
        .Tokenizers(t => t
            .PathHierarchy("windows_path_hierarchy_tokenizer", ph => ph
            .Delimiter('\\')
            )
        )
        )
    )
    .Map<Doc>(mp => mp
        .AutoMap()
        .Properties(ps => ps
        .Text(s => s
            .Name(n => n.Id)
            .Analyzer("windows_path_hierarchy_analyzer")
        )
        .Object<Attachment>(a => a
            .Name(n => n.Attachment)
            .AutoMap()
        )
        )
    )
    );

    var putPipelineResponse = client.Ingest.PutPipeline("attachments", p => p
    .Description("Document attachment pipeline")
    .Processors(pr => pr
        .Attachment<Doc>(a => a
        .Field(f => f.Content)
        .TargetField(f => f.Attachment)
        )
        .Remove<Doc>(r => r
        .Field(ff => ff
            .Field(f => f.Content)
        )
        )
    )
    );
}

PP:

所以我用:

http:/SomeWhere:9200/amazingindex/_search?pretty=true

并且这些字段被称为,例如,fileName fileExtension。所以我使用这些名称/大写创建了一个 POCO。除了 Id 和 Nest Attachment 之外,这些字段仍然没有填充。我想我必须离开 NEST 才能发送原始查询并填充 POCO。

标签: c#elasticsearchnest

解决方案


推荐阅读