我在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'}
}
}
}
}
}
我喜欢Mozilla的ElasticUltis,但我找不到查询multi_field字段的方法。
我本来期望的是:
myQuery = S.query(call_raw__wildcard="value")
有谁知道如何使用elasticutils查询multi_field字段?
答案 0 :(得分:0)
首先,您的multi_field
定义不正确。您应该在call
和raw
的同一级别设置autocomplete
主要字段。请参阅multi_field
docs。
然后,您可以将主字段查询为call
,将原始字段查询为call.raw
。
答案 1 :(得分:0)
好的 - 我在multi_field文档中找到了解决方法(tnx @DrTech)。如果添加“path”:“just_name”,则可以在没有“call”前缀的情况下访问字段(在问题“call.raw”中)。然后映射看起来像这样:
{
'station': {
"properties" :{
'id': {'type': 'integer'},
'call': {'type': 'multi_field',
'path' : 'just_name',
'fields' : {
'call': {'type': 'string', 'analyzer': 'whitespace'},
'raw': {'type': 'string', 'index': 'not_analyzed'}
}
}
}
}
}
不幸的是,这只是一种解决方法。也许别人有更好的主意?