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

标签 java elasticsearch logstash kibana elastic-stack

我正在尝试为elasticsearch 索引创建映射。当我使用以下查询创建索引时,我能够应用映射

请找到在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"
}

对于上面创建的索引,我能够应用映射并能够成功搜索。请查找以下映射详细信息

    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中创建索引,默认情况下也会为该索引(所有字段)创建映射。之后,我无法应用我的映射,它显示索引 [documents_test9/P07B6_6mRqmH9IP-UaCjrw] 已存在错误。如果我尝试删除该索引并执行此映射,则会收到无法解析映射[doc]:没有在字段[文件名]上声明的类型[字符串]的处理程序错误。

不确定,当通过logstash JDBC输入插件创建索引时如何应用映射

最佳答案

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

使用下面的模板,您添加的任何包含名称文档*的索引,即 documents1documents_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"
            }
         }
      }
   }
}

关于java - 无法为从logstash JDBC 输入插件创建的索引创建elasticsearch 的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50799406/

相关文章:

Elasticsearch 术语过滤器不起作用?

elasticsearch - ELK Stack 在 EC2 容器服务上使用 Docker

charts - Kibana可视化指标选项?

java - Android:如何在不充电时将电池统计信息添加到库存锁定屏幕?

java - Elasticsearch RestHighLevelClient 缺少传递依赖项

elasticsearch - Elastic Search是只读Api的良好数据存储吗?

php - Laravel 日志系统与 Logstash

java - 使用 Xalan APi 2.7.1 进行 XSLT 处理

java - 在带有 Mockito 的 JUnit 中,如何等待异步方法完成?

java - Smooks - 如何将选择元素从 xml 映射到 java