rawquery elasti c поисковый запрос в гнезде - поля не заполнены - PullRequest
0 голосов
/ 24 марта 2020

Это прекрасно работает:

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

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

К сожалению, ни одно поле POCO Do c не заполнено, кроме Id. Любые идеи, почему это?

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

PPS:

Итак, я использовал:

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

и поля называются, например, fileName fileExtension. Поэтому я создал POCO, используя эти имена / заглавные буквы. Тем не менее поля не заполняются отдельно от идентификатора и вложения гнезда. Я думаю, мне нужно отойти от NEST, чтобы отправлять необработанные запросы и заполнять POCO.

...