我正在尝试索引文档,其中我不知道我将其声明为对象的文档的一部分。我想要实现的是“告诉”elasticsearch 将我在此对象中给出的任何字段索引为字符串,换句话说,要映射并存储为字符串类型的任何整数、长整型、长整型、日期字段,例如
假设我们有以下文档要索引
{
"foo":"bar",
"custom_object":{
"a_name":"jim",
"a_date":"2016-3-31"
}
}
我不先验地知道custom_object中我的字段的名称是什么,该文档log的映射如下:
"mappings": {
'log': {
'properties': {
'foo': {
'type': 'string',
'index': 'not_analyzed'
},
'custom_object': {
'type': 'object'
}
}
}
我怎么知道,我给custom_object内的文档的任何内容都被映射为字符串?如果我遇到这个问题,这主要与日期值有关。我不想用 dynamic=false 或 enabled =false (取自 documentation )忽略它。有什么想法吗?
最佳答案
您可以使用dynamic templates表示名称 custom_object
中的所有字段都必须映射为 string
定义映射时,可以如下设置
"dynamic_templates":[
{
"custom_object_template":{
"path_match":"custom_object.*",
"mapping":{
"type": "string"
}
}
}
关于java - 索引未知字段时强制使用字符串类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36342292/