1.为什么要使用ElasticSearch?
为了解决传统数据库在“搜索”能力上的瓶颈。
ElasticSearch主要是通过倒排索引使得它擅长模糊、快速、相关性搜索
倒排索引:首先再保存文档是,会进行分词,然后将分词完的词条和文档的id一起储存.
在查询文档时,通过对关键词进行分词,然后根据分好的词条直接定位文档,再合并结果.
2.ES中查询的关键字有哪些?
match_all: 查询所有
match:查询(分词)
term:查询(不分词)
range:区间查询
bool:复合查询 (must:必须,must_not:不必须,should:应该,filter:筛序文档)
{
"query": {
"bool": {
"must": [
{ "match": { "title": "elasticsearch" } }
],
"filter": [
{ "term": { "status": "published" } },
{ "range": { "publish_date": { "gte": "2023-01-01" } } }
]
}
}
}
3.ES操作字符串的关键字有哪些?
keyword:不分词
text:分词
4.ES中query和filter的区别 ?
在Elasticsearch中,query和filter都用于数据检索.
query不仅会进行查询,而且会计算分值,用于确定相关性
filter判断文档是否匹配条件,不涉及相关性评分。同时覅领头人查询的结果可以被缓存,提高性能
5.如何保证ES和MySQL的数据一致性?
同步双写:再写入MySQL的同时立即将数据存入ES中
异步消息:程序再写入MySQL的之后,也向MQ中传递消息,ES相关程序监听MQ,写入ES
canel:监听MySQL的binlog,当发现写入操作后,立即读取写入ES
logstatsh:将MySQL中的数据实施传输给ES
6.如何优化ES?
合理设计映射,避免过深的嵌套对象
将不需要记分的查询条件放在filter当中,这样可以利用缓存
调整jvm堆内存大小
设置合理的分片和副本数量

1498

被折叠的 条评论
为什么被折叠?



