ElasticSearch允许使用Array作为数据类型。根据Array datatype的描述,Array中所有元素的数据类型必须和第一个元素的数据类型一样。
对于字符串、整数这些基本类型还好,系统可以自动识别。但对于时间、IP这些需要额外指定格式的怎么办?系统怎么知道12.34.56.78
是一个IP而不是字符串?
其实你什么都不用干……只要为整个字段指定mapping即可,例如:
PUT /bonree_web
{
"mappings": {
"_default_": {
"properties": {
"DNS": {"type": "ip"}
}
}
}
}
此时,DNS里既可以存单个IP,也可以存IP数组。