Запрос Multi_Field с Elasticutils
Я определил в Elastic Search следующее отображение моего индекса с одним типом multi_field.
{
'station': {
"properties" :{
'id': {'type': 'integer'},
'call': {'type': 'multi_field',
'fields' : {
'call': {'type': 'string', 'analyzer': 'whitespace'},
'raw': {'type': 'string', 'index': 'not_analyzed'}
}
}
}
}
}
Мне нравится ElasticUltis в Mozilla, но я не смог найти способ запроса полей multi_field.
Я бы ожидал что-то вроде:
myQuery = S.query(call_raw__wildcard="value")
Кто-нибудь знает, как сделать запрос к многопольному полю сластиком?
2 ответа
Хорошо - я нашел обходной путь в многопрофильных документах (tnx @DrTech). Если добавлено "path":"just_name", поле (в вопросе "call.raw") может быть доступно без префикса "call". Тогда отображение будет выглядеть так:
{
'station': {
"properties" :{
'id': {'type': 'integer'},
'call': {'type': 'multi_field',
'path' : 'just_name',
'fields' : {
'call': {'type': 'string', 'analyzer': 'whitespace'},
'raw': {'type': 'string', 'index': 'not_analyzed'}
}
}
}
}
}
К сожалению, это просто обходной путь. Может быть, у кого-то есть идея получше?
Во-первых, ваш multi_field
определение неверно. Вы должны иметь call
основное поле на том же уровне, что и raw
а также autocomplete
, Увидеть multi_field
документы
Затем вы можете запросить основное поле как call
и необработанное поле как call.raw
,