2015-01-07 87 views
0

我想爲我的索引更新elasticsearch中的默認映射。但是所有的文檔都指出,我們必須提供更新映射的類型。問題是我有很多索引類型,並且它們是在出現新類型的文檔時動態創建的。所以處理的最佳方式是默認映射類型。因爲我不必爲每種類型定義映射。但現在我無法更新我的索引默認映射。如果有可能請讓我知道?更新elasticsearch中的默認索引映射

回答

0

我用default mapping如下:

我創建索引,指定_default_映射。在這種情況下,我只有一個單一的領域,但我想,以確保它不會分析(這樣我就可以跨類型做小面,說):

curl -XDELETE "http://localhost:9200/test_index" 

curl -XPUT "http://localhost:9200/test_index" -d' 
{ 
    "mappings": { 
     "_default_": { 
     "properties": { 
      "title": { 
       "type": "string", 
       "index": "not_analyzed" 
      } 
     } 
     } 
    } 
}' 

然後,我創建了幾個文件,每一個不同的類型:

curl -XPUT "http://localhost:9200/test_index/doc_type1/1" -d' 
{ "title": "some text" }' 

curl -XPUT "http://localhost:9200/test_index/doc_type2/2" -d' 
{ "title": "some other text" }' 

因此,對於每種類型映射將被動態地產生,並且將包括用於"title"默認映射。我們可以通過查看映射看到這一點:

curl -XGET "http://localhost:9200/test_index/_mapping" 
... 
{ 
    "test_index": { 
     "mappings": { 
     "_default_": { 
      "properties": { 
       "title": { 
        "type": "string", 
        "index": "not_analyzed" 
       } 
      } 
     }, 
     "doc_type2": { 
      "properties": { 
       "title": { 
        "type": "string", 
        "index": "not_analyzed" 
       } 
      } 
     }, 
     "doc_type1": { 
      "properties": { 
       "title": { 
        "type": "string", 
        "index": "not_analyzed" 
       } 
      } 
     } 
     } 
    } 
} 

如果我刻面的title場我會找回我的期望:

curl -XPOST "http://localhost:9200/test_index/_search" -d' 
{ 
    "size": 0, 
    "facets": { 
     "title_values": { 
      "terms": { 
      "field": "title", 
      "size": 10 
      } 
     } 
    } 
}' 
... 
{ 
    "took": 1, 
    "timed_out": false, 
    "_shards": { 
     "total": 5, 
     "successful": 5, 
     "failed": 0 
    }, 
    "hits": { 
     "total": 2, 
     "max_score": 0, 
     "hits": [] 
    }, 
    "facets": { 
     "title_values": { 
     "_type": "terms", 
     "missing": 0, 
     "total": 2, 
     "other": 0, 
     "terms": [ 
      { 
       "term": "some text", 
       "count": 1 
      }, 
      { 
       "term": "some other text", 
       "count": 1 
      } 
     ] 
     } 
    } 
} 

這裏是我使用的代碼:

http://sense.qbox.io/gist/05c503ce9ea841ca4013953b211e00dadf6f1549

這是回答您的問題嗎?

編輯:這裏是你如何可以更新_default_映射現有索引:(我用Elasticsearch版本1.3.4這個答案,順便說一句)

curl -XPUT "http://localhost:9200/test_index/_default_/_mapping" -d' 
{ 
    "_default_": { 
     "properties": { 
     "title": { 
      "type": "string", 
      "index": "not_analyzed" 
     }, 
     "name": { 
      "type": "string", 
      "index": "not_analyzed" 
     } 
     } 
    } 
}' 

相關問題