面试题答案
一键面试新增字段
- 对现有数据影响:现有数据不受影响,新数据在索引时会包含新增字段。例如在一个文档集合中新增“product_color”字段,老文档不会有该字段,但不影响其正常存储和检索,新文档可以正常写入该字段信息。
- 对查询性能影响:一般不会立即显著影响查询性能。但如果后续查询频繁使用该新增字段进行过滤或聚合等操作,随着索引数据量的增长,查询性能可能会因为需要处理更多的数据维度而略有下降。比如使用新增字段进行范围查询时,Elasticsearch需要遍历更多的数据来获取结果。
- 对集群稳定性影响:基本不影响集群稳定性,因为只是增加一个新的字段定义,不涉及对现有数据结构的大规模调整。
修改字段类型
- 对现有数据影响:可能导致现有数据丢失或出现兼容性问题。例如将“integer”类型字段修改为“text”类型,如果数据转换逻辑不匹配,原有数值型数据可能无法正确映射到文本类型,导致数据丢失或错误。一般需要重新索引数据来使新的字段类型生效。
- 对查询性能影响:修改字段类型后,查询性能可能有较大变化。例如将“keyword”类型修改为“text”类型,由于“text”类型会进行分词,在进行精确匹配查询时,性能可能大幅下降,因为需要对分词后的结果进行匹配。但如果新的字段类型更适合查询需求,如范围查询时将“string”改为“date”类型,查询性能可能提升。
- 对集群稳定性影响:修改字段类型可能影响集群稳定性,尤其是在数据量较大时。重新索引数据会增加集群的I/O和CPU负载,如果处理不当,可能导致节点响应缓慢甚至集群短暂不可用。例如在高并发写入的集群中进行字段类型修改和重新索引,可能会使集群资源耗尽,影响整体稳定性。