Правильный способ сделать несколько полей с NEST

Я хочу реализовать полнотекстовый поиск и поиск по токенам с помощью NEST, поэтому я хочу получить многоуровневую систему следующим образом:

     "tweet": {
        "properties": {
           "message": {
              "type": "string",
              "store": true,
              "fields": {
                 "raw": {
                    "type": "string",
                    "index": "not_analyzed"
                 }
              }
           }
        }
     }

В настоящее время мое отображение с NEST

[ElasticType(Name = "tweet")]
internal class Tweet
{
    [ElasticProperty(Name = "message")]
    public string Message { get; set; }
}

Я искал в документации по NEST и ElasticSearch.net, но ничего не пришло.

Есть ли возможность автоматически получить необработанное поле внутри поля или я должен определить вложенный класс и указать себе необработанное поле (я бы предпочел более чистый способ)?

1 ответ

Оформить этот ответ.

В принципе, вы можете сделать что-то вроде этого:

client.CreatIndex("tweets", c => c
    .AddMapping<Tweet>(m => m
        .MapFromAttributes()
        .Properties(props => props
            .MultiField(mf => mf
                .Name(t => t.Message)
                .Fields(fs => fs
                    .String(s => s.Name(t => t.Message).Analyzer("standard"))
                    .String(s => s.Name(t => t.Message.Suffix("raw")).Index(FieldIndexOption.not_analyzed)))))));
Другие вопросы по тегам