Невозможно создать сопоставления эластичного поиска для индекса, созданного из входного плагина JDBC logstash. - PullRequest
0 голосов
/ 11 июня 2018

Я пытаюсь создать mappings для эластичного поиска index.Когда я создаю индекс с помощью запроса ниже, я могу применить mappings.

Пожалуйста, найдите запрос, который создает индекс вasticsearch

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"
            }
         }
      }
   }
}

Но в реальном сценарии я создаю индекс вasticsearch через входной плагин JDBC logstash.У меня есть возможность создать индекс вasticsearch, но проблема возникает после того, как индекс создан вasticsearch с помощью 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] ошибку.

Не уверен, как применять mappings при создании индекса через входной плагин JDBC logstash

1 Ответ

0 голосов
/ 12 июня 2018

Если я правильно понимаю вопрос, вы можете использовать шаблон индекса с подстановочным знаком, поэтому любой новый индекс, содержащий имя, совпадающее с подстановочным знаком, будет использовать данный шаблон индекса по умолчанию.

При использовании приведенного ниже шаблона любой добавляемый вами индекс, содержащий имена документов * т.е. 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"
            }
         }
      }
   }
}
...