簡體   English   中英

Elasticsearch:將映射字段類型 ID 從 long 更新為 string

[英]Elasticsearch: Update mapping field type ID from long to string

我將 elasticsearch 映射字段類型從:

    "articles": {
        "properties": {
          "id": {
              "type": "long"
          }}}

     "articles": {
        "properties": {
           "id": {
              "type": "string",
              "index": "not_analyzed"
           }

之后我做了以下步驟:

  1. 使用新映射創建索引
  2. 將映射重新索引到新索引

映射更新后,我之前的查詢過濾器不再起作用,並且沒有結果:

GET /art/_search
{
    "query": {
    "filtered": {
         "query": {
        "match_all": {}
        },
         "filter": {
            "bool": {
               "must": [
                      {
                      "type": {
                      "value": "articles"
                     }
                  },
                  {
                      "term": {
                      "id": "123467679"
                     }
                  }
               ]
            }
         }
      }
   },
   "size": 1,
   "sort": [
      {
          "_score": "desc"
      }
   ]
}

如果我檢查這個查詢結果是我所期望的:

GET /art/articles/_search
{
  "query": {
    "match_all": {}
  }
}

如果有人知道為什么在字段類型更改后查詢不再工作,我將不勝感激。

謝謝!

查詢中的問題是 ID 過濾器。 查詢工作正常,將過濾器更改為:

"term": {
         "id": "123467679"
        }

在:

"term": {
         "_id": "123467679"
        }

我仍然是 Elasticsearch 的初學者,想弄清楚為什么雖然我進行了重新索引,但映射更改破壞了查詢,但“_id”修復了我的查詢。

您可以在: elasticsearch 映射參考文檔中找到更多信息。

暫無
暫無

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

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