无法为从 logstash JDBC 输入插件创建的索引创建 elasticsearch 的映射
Not able to create elasticsearch's mappings for the index created from logstash JDBC input plugin
我正在尝试为 elasticsearch index
创建 mappings
。当我使用以下查询创建索引时,我可以应用 mappings
。
请在 elasticsearch 中找到正在创建索引的查询
put index/profile/1
{
"firstname" : "Karthik",
"lastname" : "AS",
"address" : "4/167, SouthExtn, shanmuga nagar, NA",
"Skill" : "Java, JEE, ReactJS, ActiveMQ, ElasticSearch",
"filename" : "My_second_file_created_at_2012.01.13.pdf"
}
对于上面创建的索引,我可以应用 mappings
并且可以成功搜索。请查看以下 mappings
详细信息
PUT /documents_test8
{
"settings" : {
"analysis" : {
"analyzer" : {
"filename_search" : {
"tokenizer" : "filename",
"filter" : ["lowercase"]
},
"filename_index" : {
"tokenizer" : "filename",
"filter" : ["lowercase","edge_ngram"]
}
},
"tokenizer" : {
"filename" : {
"pattern" : "[^\p{L}\d]+",
"type" : "pattern"
}
},
"filter" : {
"edge_ngram" : {
"side" : "front",
"max_gram" : 20,
"min_gram" : 1,
"type" : "edgeNGram"
}
}
}
},
"mappings" : {
"doc" : {
"properties" : {
"filename" : {
"type" : "text",
"search_analyzer" : "filename_search",
"index_analyzer" : "filename_index"
}
}
}
}
}
但在实际场景中,我通过 logstash JDBC 输入插件在 elasticsearch 中创建索引。我能够在 elasticsearch 中创建索引,但是问题是一旦默认情况下通过 logstash 在 elasticsearch 中创建索引 mappings
也为该索引(对于所有字段)创建。之后我无法应用我的 mappings
它显示 index [documents_test9/P07B6_6mRqmH9IP-UaCjrw] already exists
错误。如果我尝试删除该索引并执行此 mapping
我会收到 Failed to parse mapping [doc]: No handler for type [string] declared on field [filename]
错误。
不确定,如何在通过 logstash JDBC 输入插件创建索引时应用 mappings
如果我对问题的理解正确,您可以使用 index template 和通配符,这样任何包含通配符中匹配名称的新索引都将默认使用给定的索引模板。
使用以下模板,您添加的任何包含名称文档*(即 documents1
、documents_test8
等)的索引将默认使用给定的索引模板。
PUT _template/documents
{
"template": "documents*",
"settings" : {
"analysis" : {
"analyzer" : {
"filename_search" : {
"tokenizer" : "filename",
"filter" : ["lowercase"]
},
"filename_index" : {
"tokenizer" : "filename",
"filter" : ["lowercase","edge_ngram"]
}
},
"tokenizer" : {
"filename" : {
"pattern" : "[^\p{L}\d]+",
"type" : "pattern"
}
},
"filter" : {
"edge_ngram" : {
"side" : "front",
"max_gram" : 20,
"min_gram" : 1,
"type" : "edgeNGram"
}
}
}
},
"mappings" : {
"doc" : {
"properties" : {
"filename" : {
"type" : "text",
"search_analyzer" : "filename_search",
"index_analyzer" : "filename_index"
}
}
}
}
}
我正在尝试为 elasticsearch index
创建 mappings
。当我使用以下查询创建索引时,我可以应用 mappings
。
请在 elasticsearch 中找到正在创建索引的查询
put index/profile/1
{
"firstname" : "Karthik",
"lastname" : "AS",
"address" : "4/167, SouthExtn, shanmuga nagar, NA",
"Skill" : "Java, JEE, ReactJS, ActiveMQ, ElasticSearch",
"filename" : "My_second_file_created_at_2012.01.13.pdf"
}
对于上面创建的索引,我可以应用 mappings
并且可以成功搜索。请查看以下 mappings
详细信息
PUT /documents_test8
{
"settings" : {
"analysis" : {
"analyzer" : {
"filename_search" : {
"tokenizer" : "filename",
"filter" : ["lowercase"]
},
"filename_index" : {
"tokenizer" : "filename",
"filter" : ["lowercase","edge_ngram"]
}
},
"tokenizer" : {
"filename" : {
"pattern" : "[^\p{L}\d]+",
"type" : "pattern"
}
},
"filter" : {
"edge_ngram" : {
"side" : "front",
"max_gram" : 20,
"min_gram" : 1,
"type" : "edgeNGram"
}
}
}
},
"mappings" : {
"doc" : {
"properties" : {
"filename" : {
"type" : "text",
"search_analyzer" : "filename_search",
"index_analyzer" : "filename_index"
}
}
}
}
}
但在实际场景中,我通过 logstash JDBC 输入插件在 elasticsearch 中创建索引。我能够在 elasticsearch 中创建索引,但是问题是一旦默认情况下通过 logstash 在 elasticsearch 中创建索引 mappings
也为该索引(对于所有字段)创建。之后我无法应用我的 mappings
它显示 index [documents_test9/P07B6_6mRqmH9IP-UaCjrw] already exists
错误。如果我尝试删除该索引并执行此 mapping
我会收到 Failed to parse mapping [doc]: No handler for type [string] declared on field [filename]
错误。
不确定,如何在通过 logstash JDBC 输入插件创建索引时应用 mappings
如果我对问题的理解正确,您可以使用 index template 和通配符,这样任何包含通配符中匹配名称的新索引都将默认使用给定的索引模板。
使用以下模板,您添加的任何包含名称文档*(即 documents1
、documents_test8
等)的索引将默认使用给定的索引模板。
PUT _template/documents
{
"template": "documents*",
"settings" : {
"analysis" : {
"analyzer" : {
"filename_search" : {
"tokenizer" : "filename",
"filter" : ["lowercase"]
},
"filename_index" : {
"tokenizer" : "filename",
"filter" : ["lowercase","edge_ngram"]
}
},
"tokenizer" : {
"filename" : {
"pattern" : "[^\p{L}\d]+",
"type" : "pattern"
}
},
"filter" : {
"edge_ngram" : {
"side" : "front",
"max_gram" : 20,
"min_gram" : 1,
"type" : "edgeNGram"
}
}
}
},
"mappings" : {
"doc" : {
"properties" : {
"filename" : {
"type" : "text",
"search_analyzer" : "filename_search",
"index_analyzer" : "filename_index"
}
}
}
}
}