所以,
我在创建模板时一直使用旧的multi_field类型,如下所示。
"field_a":
{
"type": "multi_field",
"fields":
{
"searchable": {
"index": "analyzed",
"type": "string"
},
"field_a": {
"index": "not_analyzed",
"type": "string"
}
}
}
这很好,在查询时我可以在“field_a”上进行术语聚合,而不必记住放置“field_a.raw”或类似的东西。
但是,当我将其更改为仅使用fields元素的新语法时,这不再起作用。当我使用以下模板进行术语聚合时,术语会被拆分而不会带来原始值。因此,如果该字段具有“测试字段”的值,我希望它将“测试字段”作为一个术语而不是“测试”,“一个”,“字段”作为单个术语。请注意,这是使用原始模板返回的内容。
"field_a":
{
"type": "string",
"fields":
{
"searchable": {
"index": "analyzed",
"type": "string"
},
"field_a": {
"index": "not_analyzed",
"type": "string"
}
}
}
我尝试将“index”:“not_analyzed”移动到初始字段映射中,只是在“type”下,但是这给了我一个错误,“非法字段[index],只能在字段内指定字段”,当试图索引文件。
所以我的问题是,有没有办法让初始字段not_analyzed,然后有一个可搜索的附加字段?或者我是否必须更改所有内容以包含两个单独的字段,其中一个原始和一个可搜索的内容似乎有点奇怪,这是如何工作之前,请注意。
我正在使用
NEST:1.7.2 ES:1.5.2