es分页问题等等

181 阅读3分钟

1.什么是深度分页问题?如何解决?

深度分页问题是指在数据库查询中,当用户请求的页面数量(即页面索引或页码)非常大时,数据库的性能可能会受到影响,查询时间变长,甚至会出现连接超时等错误。这是因为数据库查询操作需要扫描整个表,并返回满足条件的结果集,当数据量非常庞大时,查询的执行时间和系统开销也会变得非常高。 search after:分页时需要排序,原理是从上一次的排序值开始,查询下一页数据。官方推荐使用的方式。 scroll:原理将排序后的文档id形成快照,保存在内存。官方已经不推荐使用。

2.ES中的查询分类有几种?分别是什么以及它们的使用场景

Match Query:用于匹配特定字段中的文本内容。它可以模糊匹配、精确匹配或使用布尔操作符进行复合匹配。 Term Query:用于查找指定字段中的确切值,不会对搜索词进行分词处理,只能匹配完全相同的字符串。 Range Query:用于查找一个范围内的数值或日期值,可以设置上限和下限,支持包含上下限或排除上下限。 Bool Query:用于将多个查询条件组合成更复杂的查询,例如AND、OR、NOT等逻辑关系。 Match Query适用于全文检索,Term Query适用于精确查找,Range Query适用于查找数值或日期范围,Bool Query适用于复合查询等

3.什么是竞价排名?如何实现?

竞价排名是一种在搜索引擎中的广告投放方式,广告主通过出价来竞争展示自己的广告位。当用户在搜索引擎中输入关键词时,相关的广告会在搜索结果页面上显示,这些广告的展示顺序是根据广告主出价高低、广告质量和用户搜索意图等因素综合考虑后确定的。 我们可以给酒店添加一个字段:isAD,Boolean类型:然后true是广告,false不是广告,function_score包含了过滤条件,算分函数,加权方式。

4.要导入100百条记录到ES中,你会怎么做?

确认ES的版本和集群状态,确保可以正常连接到ES。 根据需要导入的数据类型,在ES中创建对应的索引和映射,以便能够正确地处理和存储数据。 准备好要导入的数据,可以是JSON格式或其他格式。如果数据不是JSON格式,需要先将其转换为JSON格式。 使用ES提供的API(如bulk API)批量导入数据。需要注意数据的格式和结构必须符合创建的索引和映射要求。 导入完成后,可以使用Kibana等工具验证数据是否被正确地存储在ES中,并进行查询和可视化分析。