我正在尝试优化我的弹性搜索。 我有几个布尔字段,我使用查询。 我可以省去他们,但这会给我的客户方面带来困难。
我的问题是,将这些字段设置为"index":"yes"
是否会对我的索引性能产生显着的负面影响,例如索引时间和大小(除了明显的“存储”空间)?
布尔索引字段是否真的占用更多空间?它似乎不应该。此外,我认为为任何数据库创建这样的索引没有任何好处,不仅仅是elasticsearch。
但是,我必须指定"index":"yes"
才能通过它进行过滤,对吗?
答案 0 :(得分:2)
如果要搜索字段,则必须对其进行索引。默认情况下,boolean
字段已编入索引,并且将占用少量空间。将有"myfield": true
和"myfield": false
的文档列表。
如果您不想维护此索引,那么当您想要查找"myfield": true
所需的文档时,您必须通过每个文档检查该字段。
如果您不想使用该字段进行搜索/过滤,请务必设置"index": "no"
,如果您将来改变对此字段的想法,请注意您需要重新编制所有内容的索引!
Have a look at the elaticsearch docs on mappings; the core types section,向下滚动到布尔类型。