2013-06-13 59 views
1

我正試圖優化我的elasticsearch。 我有幾個布爾字段,我用查詢。 我可以放棄它們,但這會給我的客戶端帶來很大的困難。在elasticsearch中是否需要布爾型字段索引

我的問題是,將這些字段設置爲"index":"yes"是否會對索引的性能產生顯着的負面影響,例如索引時間和大小(除了明顯的「存儲」空間外)?

布爾索引字段真的佔用更多空間嗎?看來它不應該。此外,我不認爲爲任何數據庫創建這樣的索引都有好處,不僅僅是彈性搜索。

但是,我必須指定"index":"yes"能夠按它過濾,對吧?

回答

2

如果你想搜索一個字段,你必須索引它。默認情況下,boolean字段已編入索引,並且會佔用一小部分空間。將有一個文檔列表"myfield": true"myfield": false

如果你不想保留這個索引,那麼當你想找到"myfield": true的文檔時,你將不得不通過每個文檔來檢查該字段。

如果你不想搜索/過濾該字段,通過所有方式設置"index": "no",只是被警告,如果你將來改變你對這個領域的想法,你將需要重新索引一切。

Have a look at the elaticsearch docs on mappings; the core types section,向下滾動到布爾類型。

+0

你說的話很有意義。 我的直覺是,如果我有一個布爾型字段的索引,那麼使用該布爾型索引,則轉到布爾索引中用於文檔ID散列的位置,並查看它是否屬於「true」或「假」組。 與存儲中doc_id的散列值相同的效果,並查看字段值? 本質上我沒有看到檢查一個項目是否在一個集合中(真或假)的計算工作量小於在服務器端檢查該字段值的工作量。 – eran

+0

當然,但你正在做一個查找或搜索? 我正在做一個搜索,即:給我docs myfield = true。 如果您已經擁有文檔ID並想知道該字段的值,爲什麼要使用索引? – ramseykhalaf

+0

我正在做一個搜索(/ filter)。我明白你在說什麼。謝謝! – eran

相關問題