2017-04-03 31 views
0

我在Drupal中創建了一個索引,並且我的查詢工作正常。 現在我嘗試添加濾鏡小寫和asciifolding在elasticsearch.yml文件,但沒有成功:Elasticsearch和Drupal:如何添加篩選器小寫和asciifolding

我添加這些行:

index: 
analysis: 
    analyzer: 
    default: 
    filter : [standard, lowercase, asciifolding] 

我有一個錯誤:IndexCreationException:myindex]未能創建索引。 但'myindex'已經存在,我只是嘗試添加過濾器到這個現有的索引。

如何添加這些過濾器以便索引對我來說是正確的?

非常感謝您的幫助。

回答

0

您得到此異常的原因是因爲無法通過調用通用創建索引端點來更新索引的設置。爲了更新分析儀,您必須調用'_settings'端點。

我如何做到這一點做了一個小例子給你:

PUT test 
{ 
    "settings": { 
    "analysis": { 
     "analyzer": { 
     "new_analyzer": { 
      "tokenizer": "standard" 
     } 
     } 
    } 
    } 
} 

GET test/_analyze 
{ 
    "analyzer": "new_analyzer", 
    "text": "NoLowercasse" 
} 

POST test/_close 

PUT test/_settings 
{ 
    "analysis": { 
    "analyzer": { 
     "new_analyzer": { 
     "tokenizer": "standard", 
     "filter": [ 
      "asciifolding", 
      "lowercase" 
     ] 
     } 
    } 
    } 
} 

POST test/_open 

GET test/_analyze 
{ 
    "analyzer": "new_analyzer", 
    "text": "LowerCaseAdded" 
} 

響應:

{ 
    "tokens": [ 
    { 
     "token": "lowercaseadded", 
     "start_offset": 0, 
     "end_offset": 14, 
     "type": "<ALPHANUM>", 
     "position": 0 
    } 
    ] 
} 

你可以看到,第二次分析後,正在應用的小寫過濾器。你必須關閉索引的原因是因爲它需要重建分析器。您會注意到新分析儀不能按預期工作,因爲之前添加的文檔沒有使用此分析儀進行索引,而是沒有使用asciifolding和小寫字母的索引。 爲了解決這個問題,你將不得不重建你的索引(例如Reindex-API

希望這有助於!

編輯:我可能是在響應有點太快了,因爲這不是一個Drupal彈性的解決方案,但它可能爲你指明正確的方向。說實話,我不熟悉與Drupal結合運行ES。

+0

非常感謝拜倫:)確實是正確的方向,但我沒有設法將它應用於Drupal,此刻... –

+0

我會繼續檢查 –

+0

我問了一個新問題,我通知你的延續...... –