我有一個文檔,其中包含許多我從不查詢的字段,因此我想將這些字段的索引轉爲節省資源。我相信我需要disable the _all
field,但是如何指定哪些字段被索引呢?指定哪些字段在ElasticSearch中編入索引
回答
默認情況下,所有字段都在_all特殊字段中編入索引,該字段提供所謂的catchall功能。但是,你可以在你的映射爲每個字段指定您是否希望將其添加到_all場與否,通過include_in_all
選項:
"person" : {
"properties" : {
"name" : {
"type" : "string", "store" : "yes", "include_in_all" : false
}
}
}
上面的例子禁用名稱字段,從而贏得了默認行爲不會成爲_all字段的一部分。如果禁用它
"person" : {
"_all" : {"enabled" : false},
"properties" : {
"name" : {
"type" : "string", "store" : "yes"
}
}
}
你的領域仍然會被索引:
否則,如果你不需要_all場在所有特定類型,你可以像這樣再次在映射禁用它,分開,但您不會擁有_all提供的catchall功能。然後您需要查詢您的特定字段,而不是依賴_all專業字段,就是這樣。實際上,當您查詢並且未指定字段時,elasticsearch將查詢引擎下的_all字段,除非您覆蓋要查詢的默認字段。
每個字符串字段在映射配置中都有index
參數,其中defaults toanalyzed
。這意味着除了_all字段外,每個字段都只被索引。
而對於_all field它在基準說:
默認情況下,它被啓用,所有領域都包含在它的易用性。
所以,你必須指定(如果_all場啓用)字段完全禁用索引:
"mappings": {
"your_mapping": {
"properties": {
"field_not_to_index": {
"type": "string",
"include_in_all": false,
"index": "no"
}
}
}
}
對於應就是否要查詢的字段包括他們在_all場(使用"index": "no"
節省資源),如果您通過_all字段進行查詢,或者如果您僅在這些字段上查詢,請使用具有任何正值的index
參數(analyzed
或not_analyzed
),並禁用_all字段以節省資源。
下面是一個重要的文檔頁面,瞭解彈性搜索 http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/mapping-intro.html
有關問題的指標設置,最好你應該設置「指數」標誌,沒有在字段屬性。
在這一環節中,例如顯示「指標」:「not_analyzed」。但我認爲索引和分析在ES中是不同的概念? '不'是與'not_analyzed'不同的設置嗎?請澄清。 – szeitlin
'analyzed' 首先分析字符串,然後建立索引。換句話說,請將此字段索引爲全文。 'not_analyzed' 指數這一領域,所以它是搜索,但作爲指定索引值完全。不要分析它。 'no' 不索引這個領域的。該字段不可搜索。 – Tjorriemorrie
將動態索引和_all索引設置爲false。在映射中指定必需的字段。 https://www.elastic.co/guide/en/elasticsearch/guide/current/dynamic-mapping.html
{
"mappings":{
"candidates":{
"_all":{
"enabled":false
},
"dynamic": "false",
"properties":{
"tags":{
"type":"text"
},
"derivedAttributes":{
"properties":{
"city":{
"type":"text"
},
"zip5":{
"type":"keyword"
}
}
}
}
}
}
}
- 1. 爲什麼在Elasticsearch中按字段而不是索引指定字段?
- 2. 在elasticsearch中索引文檔時創建了哪些索引
- 3. ElasticSearch:僅索引映射中指定的字段
- 4. 指定字段進行搜索到elasticsearch
- 5. 我需要索引哪些字段?
- 6. 如何在Elasticsearch中搜索沒有特定字段的索引
- 7. 哪些列在MySQL中編制索引?
- 8. 僅索引mongodb中ElasticSearch的一些字段
- 9. 在MongoDB中,需要選擇哪些字段來構建索引?
- 10. 哪些詞在索引字段中最常見?
- 11. 哪些字段應該放在索引中?
- 12. 我應該在Rails應用程序中索引哪些字段?
- 13. 禁用Elasticsearch中文檔中所有字段的索引字段
- 14. elasticsearch中創建的elasticalert索引中的自定義字段
- 15. Elasticsearch僅在索引有字段時使用索引過濾器
- 16. 指定要在組()中查詢哪些字段查詢
- 17. FormView - 指定在POST中發送哪些字段
- 18. 顯示Lucene/Elasticsearch索引的字段
- 19. Elasticsearch查詢哪些字段有給定的類型?
- 20. 如何更新Elasticsearch索引中的特定字段?
- 21. django-haystack教程中模型的哪些字段獲得索引?
- 22. Flash中的哪些文本被Google編入索引?
- 23. elasticsearch - 自定義字段添加到特定索引
- 24. 無法指定Elasticsearch父字段
- 25. 確定哪些字段在lucene多字段查詢中匹配
- 26. 搜索字符串中的索引字段中elasticsearch Java中的字
- 27. 在elasticsearch中是否需要布爾型字段索引
- 28. 在elasticsearch中,如何使索引字段具有lucene IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS?
- 29. 在elasticsearch rails中爲jsonb字段的屬性添加索引
- 30. 只使用elasticsearch搜索特定字段
謝謝!所以我可以禁用'_all',因爲我沒有使用該功能,希望這會減小索引的大小。而且,如果我理解得很好,那麼減少索引大小的唯一方法就是在不搜索的字段上指定'not_analyzed'。 – Michael
嗯,這不僅僅是改變索引大小......它改變了數據索引的方式。如果你不分析一個字段,它將包含一個單一的標記。不會使用標記器或標記過濾器。如果它包含一個句子(用空格等),爲了匹配它,你需要查詢整個確切的句子。如果您從不查詢只設置indexed = false的字段。 – javanna
是的,這就是我的想法。感謝您的解釋。我有我的證件,如「說明」或「鏈接」,我永遠需要尋找的所以它是一種資源的浪費,分析他們的一些領域。而且我測試了運行在內存中的整個指數('{「指數」:{「store.type」:「記憶」}}'),所以指數的大小將成爲一個重要的因素。 – Michael