Правильный способ сделать несколько полей с 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)))))));