面试题答案
一键面试1. 创建索引
使用 Elasticsearch 的 PUT
请求创建索引。例如:
PUT /ecommerce_products
{
"settings": {
"number_of_shards": 5,
"number_of_replicas": 1
}
}
原因:
- 分片(
number_of_shards
):数据量庞大时,将数据分布在多个分片上,可并行处理查询,提高搜索性能。选择5个分片是一个经验值,具体数量需根据数据量和服务器资源调整。更多分片可处理更大数据量,但会增加管理开销。 - 副本(
number_of_replicas
):副本用于提高高可用性和搜索吞吐量。设置为1,即每个分片有一个副本,在主分片故障时可提供数据冗余,同时可分担读请求,提升搜索效率。
2. 设计映射关系
映射定义了文档中字段的数据类型。例如:
PUT /ecommerce_products/_mapping
{
"properties": {
"product_name": {
"type": "text",
"analyzer": "standard"
},
"price": {
"type": "float"
},
"product_date": {
"type": "date",
"format": "yyyy - MM - dd"
}
}
}
原因:
- 文本字段(
product_name
):使用text
类型,适合全文搜索。analyzer
设置为standard
,会将文本按词切分,建立倒排索引,支持高效的全文检索。 - 数字字段(
price
):用float
类型存储价格,适合数值类型的聚合分析,如计算平均价格、总价等。 - 日期字段(
product_date
):date
类型可进行日期范围查询和按日期聚合。format
定义日期格式,确保日期数据的正确解析和存储。