2016-04-28 64 views
1

我試圖做的:在Elasticsearch中,如何使用自動映射來創建索引並且不分析所有字段?

PUT /index_name/ 

{ "index" : { 
     "analysis" : { 
      "analyzer" :"not_analyzed"    
     } 
    } 
} 

,但我不知道這是正確的方式...

編輯:

我申請從答案兩種方法。但我無法測試它。如果實際上它做

GET /index_name/_mapping 
... 
    "metaData_requestHeaders_accept-language": { 
         "type": "string" 
        }, 
        "metaData_requestHeaders_akamai-origin-hop": { 
         "type": "string" 
        }, 
        "metaData_requestHeaders_alexatoolbar-alx_ns_ph": { 
         "type": "string" 
        }, 
        "metaData_requestHeaders_authorization": { 
         "type": "string" 
        }, 
        "metaData_requestHeaders_c": { 
         "type": "string" 
        }, 
        "metaData_requestHeaders_cache-control": { 
         "type": "string" 
        }, 
        "metaData_requestHeaders_ckiooe": { 
         "type": "string" 
        }, 
... 

正如你所看到的自動映射不顯示使用什麼分析儀。所以我無法測試這是否真正起作用。有任何想法嗎?

+0

檢查:http://stackoverflow.com/questions/27570365/disabling-field-analyzing-by-default-in-elastic-search – alpert

回答

1

使用Dynamic Templates,如:

PUT my_index 
{ 
"mappings": { 
    "my_type": { 
    "dynamic_templates": [ 
     { 
      "strings": { 
       "match_mapping_type": "string", 
       "mapping": { 
       "type": "string", 
       "index": "not_analyzed" 
       } 
      } 
      } 
     ] 
    } 
    } 
    } 

應用上面的模板後,你應該看到這樣的事情:

GET /my_index/_mapping 

{ 
"my_index": { 
    "mappings": { 
    "my_type": { 
     "dynamic_templates": [ 
      { 
       "strings": { 
       "mapping": { 
        "index": "not_analyzed", 
        "type": "string" 
       }, 
       "match_mapping_type": "string" 
       } 
      } 
     ], 
     "properties": {} 
     } 
    } 
    } 
} 

上述映射表明,所有字符串將not_analyzed默認。

+0

請我編輯 – gotch4

+0

請參閱我的答案中的編輯。我有一個問題。你的索引是否已經包含一些字符串字段,例如'metaData_requestHeaders_accept-language'等等.. – Richa

+0

現在看來可以工作了 – gotch4

0

我想你要找的是Elasticsearch Templates,它允許你動態地創建映射。

你想是這樣的:

PUT index_name 
{ 
    "mappings": { 
    "type_name": { 
     "dynamic_templates": [ 
     { 
      "strings": { 
      "match_mapping_type": "string", 
      "mapping": { 
       "type": "string", 
       "fields": { 
       "raw": { 
        "type": "string", 
        "index": "not_analyzed" 
       } 
       } 
      } 
      } 
     } 
     ] 
    } 
    } 
} 
+0

請檢查我的編輯 – gotch4

+0

映射不顯示''索引' :「not_analyzed」屬性?創建動態模板後,是否重新創建索引?如果不是這樣,那麼映射只會針對您可能添加的任何新字段進行更改,其餘部分將保持不變。至於測試的方法,你總是可以嘗試應用「術語聚合」,並且如果結果桶中的鍵是小寫字母並且在空格和其他標點符號上分開,則分析該字段。 – ystark

相關問題