Logstash: переход от одного упругого поиска к другому упругому поиску приводит к некоторым дополнительным свойствам - PullRequest
0 голосов
/ 16 октября 2019

Я перенес один из индексов с Elasticsearch, размещенной на собственном хосте, в Amazon ElasticSearch, используя Logstash. После успешной миграции мы обнаружили, что некоторые дополнительные поля добавляются в документы. Как мы можем предотвратить его добавление

Наш конфигурационный файл Logstash

input {
 elasticsearch {
 hosts => ["https://staing-example.com:443"]
 user => "userName"
 password => "password"
 index => "testingindex"
 size => 100
 scroll => "1m"
 }
}

filter {

}

output {
 amazon_es {
 hosts => ["https://example.us-east-1.es.amazonaws.com:443"]
 region => "us-east-1"
 aws_access_key_id => "access_key_id"
 aws_secret_access_key => "access_key_id"
 index => "testingindex"
}
stdout{
  codec => rubydebug
  }
}

Документ в нашем собственном ElasticSearch

{
        "_index": "testingindex",
        "_type": "interaction-3",
        "_id": "38b23e7a-eafd-4163-a9f0-e2d9ffd5d2cf",
        "_score": 1,
        "_source": {
           "customerId" : [
            "e177c1f8-1fbd-4b2e-82b8-760536e42742"
          ],
          "customProperty" : {
            "messageFrom" : [
              "BOT"
            ]
          },
          "userId" : [
            "e177c1f8-1fbd-4b2e-82b8-760536e42742"
          ],
          "uniqueIdentifier" : "2b027fc0-a517-49a7-a71f-8732044cb249",
          "accountId" : "724bee3e-38f8-4538-b944-f3e21c518437"
        }
      }

Документ, который находится в нашем Amazon ElasticSearch

   {
        "_index" : "testingindex",
        "_type" : "doc",
        "_id" : "B-hP020Bd2lcvg9lTyBH",
        "_score" : 1.0,
        "_source" : {
          "customerId" : [
            "e177c1f8-1fbd-4b2e-82b8-760536e42742"
          ],
          "customProperty" : {
            "messageFrom" : [
              "BOT"
            ]
          },
          "@version" : "1",
          "userId" : [
            "e177c1f8-1fbd-4b2e-82b8-760536e42742"
          ],
          "@timestamp" : "2019-10-16T06:44:13.154Z",
          "uniqueIdentifier" : "2b027fc0-a517-49a7-a71f-8732044cb249",
          "accountId" : "724bee3e-38f8-4538-b944-f3e21c518437"
        }
      }

@ Version и @Timestamp - это новые два поля, добавляемые в документы

Может кто-нибудь объяснить, почему оно добавляется, есть ли другой способ предотвратить это? Когда вы сравниваете оба документа, _type и _id, также меняющиеся, нам нужны и _type, и _id, такие же, как и наши документы в размещенном в Elasticsearch

.

1 Ответ

0 голосов
/ 16 октября 2019

Поля @version и @timestamp генерируются logstash, если вы не хотите их использовать, вам нужно использовать фильтр мутаций для удаления.

mutate {
    remove_fields => ["@version","@timestamp"]
}

Чтобы сохранить _typeи _id ваших оригинальных документов, вам нужно будет изменить свой ввод и добавить параметр docinfo => true, чтобы получить эти поля в поле @metadata и использовать их в своем выводе, документация имеетпример для этого.

input {
    elasticsearch {
        ...
        docinfo => true
    }

output {
    elasticsearch {
        ...
        document_type => "%{[@metadata][_type]}"
        document_id => "%{[@metadata][_id]}"
    }
}

Обратите внимание, что если у вас Amazon Elasticsearch версии 6.X или выше, у вас может быть только один тип документа для индекса, а версия 7.X - typeless Кроме того, logstash версии 7.X больше не имеет опции document_type.

...