elasticsearch的基本操作——基于restful风格

elasticsearch的基本操作——基于restful风格

Scroll Down

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目录下即可

祝君好梦!