示例文件:
{
"first_name": "Uttam",
"last_name": "Kini",
"metadata": [
{
"field_type": "small_text",
"field_value": "bla bla"
},
{
"field_type": "large_text",
"field_value": "bla bla bla bla bla bla bla bla"
},
]
}
如何根据metadata.field_value
动态设置metadata.field_type
的映射?
例如,当metadata.field_type
为small_text
时,我想使用带有关键字标记符的分析器,当metadata.field_type
为large_text
时,我想使用不同的分析器。
答案 0 :(得分:1)
我认为不可能直接这样做。不支持的重要原因是不可能在包含不同分析仪产品的现场外提供高质量的结果。考虑解析查询:您将在查询中使用哪个分析器来匹配由两个不同分析器生成的术语?
解决方法是使用multi-fields。您基本上为field_value
创建了两个相关字段,对每个字段应用不同的映射。然后,在查询时,您构造一个具有两个分支的查询:
(field_type:small_text AND field_value.small_text:abc)
OR (field_type:large_text AND field_value.large_text:abc)
注意:我在这里使用了查询字符串以提高可读性,您可能最好使用带有or
和and
过滤器的过滤查询