2016-12-01 312 views
0

根據Elasticsearch documentation有可能排除從場_all使用include_in_all設置字段(設置爲假)。我需要從_all中排除一個字段,我使用spring數據elasticsearch確定了我的映射。我還沒有找到辦法這樣做。include_in_all設置elasticsearch

這是可能的使用彈簧數據elasticsearch註釋?

回答

0

不幸的是,Spring Data Elasticsearch無法做到這一點。改善請求已經一歲多,但它的優先級是輕微的,所以是沒有希望的現在: https://jira.spring.io/browse/DATAES-226

我在去年的項目,我必須通過「_all」做了很多簡單的搜索(而不是一個字段,我每個字段使用1次搜索),然後統一所有結果。我假設Spring Data Elasticsearch沒有很好的解決這個問題的方法。

0

你可以保存你的類型到一個json文件的映射。然後,將''include_in_all':false'添加到要排除的字段。這應該看起來像這樣。

{ 
    "my_type": { 
    "properties": { 
     "excludedField": { 
     "type": "text", 
     "include_in_all": false 
     } 
    } 
    } 
} 

然後用自己喜歡的JSON閱讀器加載該文件,解析它作爲一個字符串,並與elasticsearch API改變你的映射。

client.admin().indices() 
     .preparePutMapping("my_index") 
     .setType("my_type") 
     .setSource(loadedFileString) 
     .get(); 

編輯:我只注意到你想要使用的註釋吧。也許@Field註解有一個參數呢?對不起,我對註釋沒有經驗。

+0

不幸的是,它沒有。註釋更容易,更不容易出錯,這就是爲什麼我更喜歡它們,但我可能沒有選擇,只能按照你的建議。儘管我認爲這將需要重寫所有從註釋到json的映射,因爲它們可能無法一起使用。謝謝回覆! – onlyahobo

+0

您不需要重寫映射,只需在索引中檢查它們並複製粘貼即可。是的,我猜api總是有點落後,所以誰知道何時添加功能。 – SlideM