elasticsearch的基本操作和概念
1.elasticsearch的基本概念
1.核心术语
es中 数据库中
索引--->库
文档--->表
字段--->列
shard集群主分片
replica备份
2.es的原理
es是基于倒排索引的,即将字段进行索引(类似将内容进行索引),将对应类型的字段进行不同处理(分词 不分词),然后形成对应文档的位置,统计了词频与位置
图文理解:
https://developer.51cto.com/art/201904/594615.htm
3.es的基于resultful的操作
PUT--创建
GET --查询
DELETE--删除
UPDATE--更新
相关DSL:https://www.cnblogs.com/zenan/p/10968161.html
4.其他问题
1.深度分页
es会默认分页到0-9999条数据 超过这个范围的数据会报错,其考虑的是:如果节点数据多,es会将每个节点的数据汇总,在进行查询分页,会严重影响性能,所以在业务处理的时候应当将分页限制到100页以内,如果有需求设置数量超过10w
可以设置index.max_result_window
2.es的游标查询
类似于Redis的游标查询,es可以通过scroll查询来解决大数据量的查询,每次会返回部分数据和锚点,例如:
第一次查询:
http://localhost:9200/smartmarket/food/_search?scroll=1m
第二次查询:需要带上
http://localhost:9200/_search/scroll
{
"scroll": "1m",
"scroll_id" : "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAADcWTHItMVlVQTVUMk9pcFVkcUV6VGpZZw=="
}
3.es的分词器
es自带了:标准,空格,忽略助词的分词,但是默认的对中文支持不友好,我们经常使用ik分词器。
ik分词器下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases
只需下载放入plugin文件夹下,如果需要自定义词组,编辑IKAnalyzer.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict">custom/mydict.dic;custom/single_word_low_freq.dic</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords">custom/ext_stopword.dic</entry>
<!--用户可以在这里配置远程扩展字典 -->
<entry key="remote_ext_dict">location</entry>
<!--用户可以在这里配置远程扩展停止词字典-->
<entry key="remote_ext_stopwords">http://xxx.com/xxx.dic</entry>
</properties>
放入自定义的词组在custom/ext_stopword.dic目录下即可
祝君好梦!