我有一个带有属性aliases
的文档,它是一个字符串列表。我想根据该列表指定多字段,以便我可以使用适当的语言分析进行搜索。
但是使用这种映射:
'names':{
'type':'object',
'fields': {
'native': {
'type': 'text', <- I guess this doesn't even make sense
'analyzer': 'en'
}
}
}
可以实现吗?我知道有可能有动态映射,但我不知道如何在这个问题中使用它。我还阅读了有关嵌套对象的文档,它接近给我一个解决方案,但它不是一个完美的契合,除非我将每个字符串变成一个对象。
答案 0 :(得分:0)
字符串数组的映射方式与常规文本相同。这意味着在映射中您只需指定'type': 'text'
而不是'type':'object'
,一切都按预期工作。
有关数组的文档包含以下文本框:
所有字段类型都支持开箱即用的多值字段,这是Lucene起源的结果。 Lucene旨在成为一个全文搜索引擎。为了能够在一大块文本中搜索单个单词,Lucene将文本标记为单个术语,并将每个术语分别添加到反向索引中。
这意味着即使是简单的文本字段也必须能够默认支持多个值。当添加其他数据类型(例如数字和日期)时,它们使用与字符串相同的数据结构,因此可以免费获得多值。
事实上,如果您只是创建一个包含字符串数组的文档并且GET
动态创建了映射,您将看到类似于
{'fields': {'keyword': {'ignore_above': 256, 'type': 'keyword'}},
'type': 'text'}
与常规文本字段相同。