簡體   English   中英

Elastic Search批量上傳不繼承預定義的映射

[英]Elastic Search bulk upload not inheriting predefined mapping

我正在嘗試使用批量上傳方法將JSON內容上傳到Elastic中,但是情況是創建該JSON的導出應用程序沒有完全給出干凈的JSON。 一個例子:

{ 
   ...
   "filesize" : "123456"
}

當我批量上傳時,Elastic將字段“ filesize”解釋為字符串,因此我決定嘗試創建映射,以便Elastic嘗試將其讀取為整數。 我不完全確定這是正確的處理方式,因為我不相信字段映射會強制執行從字符串到數字的轉換,但還是值得一試。

我的映射是這樣的:

PUT /my_index/
{
  "mappings": {
    "my_item": {
      "properties": {
        "sub_item_a": {
          "properties" :{
            "sub_item_b": {
              "properties": {
                "filesize": {
                  "type": "integer"
                }
              }
            }
          }
        }
      }
    }
  }
}

創建此映射后,我通過以下方法檢查了映射:

GET /my_index/my_item/_mapping

這確認了映射已到位,因此我導入了數據,再次檢查了映射並確認它仍然正確(並且已正確嵌套在所有動態分析的其他內容之中)。

但是,當我轉到Kibana中的“發現”儀表板時,“文件大小”字段的內容仍然是經過分析的文本字段。 這是一個問題,因為我想將其用作Kibana可視化中的存儲桶數。

我試圖通過在JSON文件上使用一些正則表達式來解決此問題,以使其讀取時不帶引號引起來的整數:

{ 
   ...
   "filesize" : 123456
}

然后,我再次執行了整個刪除索引/創建映射/重新上傳的過程,並且發生了相同的結果:Elastic仍然確信這是一個文本字段。

我做錯了什么嗎? 還是我錯過了一條相關信息,這意味着它行不通?

我知道我可以通過LogStash達到結果,但是我正在嘗試刪除所有處理步驟以簡化正在構建的應用程序的這一部分。

作為記錄:

彈性版本-2.2.0

Kibana版本-4.4.1

好吧,我明白了。

基本上,當刪除索引時,我只是運行了“ DELETE my_index”。 嘗試重新上傳數據時,映射和所有其他關聯的內容保持不變。

我只是運行了“ DELETE _all”,然后進行了映射,然后重新上傳了數據,然后創建了新索引,現在一切正常。

暫無
暫無

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

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