首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法为从logstash输入插件创建的索引创建elasticsearch的映射

无法为从logstash输入插件创建的索引创建elasticsearch的映射
EN

Stack Overflow用户
提问于 2018-06-11 13:54:31
回答 1查看 364关注 0票数 0

我试图为elasticsearch index创建index。当我使用下面的查询创建索引时,可以应用mappings

请查找在elasticsearch中创建索引的查询

代码语言:javascript
复制
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详细信息

代码语言:javascript
复制
    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输入插件在elasticsearch中创建索引。能够在elasticsearch中创建索引,但是一旦在elasticsearch中通过logstash创建索引(在默认情况下),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输入插件创建索引时,如何应用mappings

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-11 21:57:53

如果我正确理解这个问题,您可以在通配符中使用索引模板,这样在通配符中包含名称匹配的任何新索引都将默认使用给定的索引模板。

对于下面的模板,任何包含名称文档*(即documents1documents_test8等)的索引都将默认使用给定的索引模板。

代码语言:javascript
复制
 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"
            }
         }
      }
   }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50799406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档