Запрос 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,

Другие вопросы по тегам