簡體   English   中英

Elasticsearch - 使用存儲/排除字段重新索引文檔

[英]Elasticsearch - Reindex documents with stored / excluded fields

我有一個具有以下配置的索引映射:

"mappings" : {
  "_source" : {
    "excludes" : [
      "special_field"
    ]
  },
  "properties" : {
    "special_field" : {
      "type" : "text",
      "store" : true
    },
  }
}

因此,當使用此映射對新文檔進行索引時,會得到以下結果:

{
  "_index": "********-2021",
  "_id": "************",
  "_source": {
    ...
  },
  "fields": {
    "special_field": [
      "my special text"
    ]
  }
}

如果執行_search查詢,則不會在_source內返回special_field作為其排除項。

使用以下_search查詢,可以完美返回special_field數據:

GET ********-2021/_search
{
  "stored_fields": [ "special_field" ],
  "_source": true
}

現在我試圖重新索引該索引內的所有文檔,但我丟失了存儲在special_field中的信息,並且只有_source字段正在重新索引。

有沒有辦法將special_field放回_source字段中?

有沒有辦法在不丟失special_field數據的情況下重新索引該文檔?

如何在不丟失special_field數據的情況下將這些文檔遷移到另一個集群?

謝謝你們。

謝謝 Hamid Bayat,我終於用一個小的 logstash 管道得到了它。

我將分享它:

input {
  elasticsearch {
    hosts => "my-first-cluster:9200"
    index => "my-index-pattern-*"
    user => "****"
    password => "****"
    query => '{ "stored_fields": [ "special_field" ], "_source": true }'
    size => 500
    scroll => "5m"
    docinfo => true
    docinfo_fields => ["_index", "_type", "_id", "fields"]
  }
}

filter {
  if [@metadata][fields][special_field]{
    mutate {
      add_field => { "special_field" => "%{[@metadata][fields][special_field]}" }
    }
  }
}

output {
  elasticsearch {
    hosts => ["http://my-second-cluster:9200"]
    password => "****"
    user => "****"
    index => "%{[@metadata][_index]}"
    document_id => "%{[@metadata][_id]}"
    template => "/usr/share/logstash/config/index_template.json"
    template_name => "template-name"
    template_overwrite => true 
  }
}

我必須在docinfo_fields => ["_index", "_type", "_id", "fields"] elasticsearch 輸入插件中添加fields ,並且我所有的存儲字段都在[@metadata][fields]事件字段上。

由於@metadata字段未編入索引,我不得不在根級別添加一個具有[@metadata][fields][special_field]值的新字段。

它的工作就像一個魅力。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM