es

es是Lucene上做的改进

 解决跨域问题:在D:\aaa2222339\elasticsearch-7.8.0-windows-x86_64\elasticsearch-7.8.0\config的elasticsearch.yml底部加:

http.cors.enabled: true
http.cors.allow-origin: "*"

运行es:双击bat,浏览器输入http://localhost:9200/

客户端head运行:在D:\aaa2222339\elasticsearch-7.8.0-windows-x86_64\elasticsearch-head-master下,进入cmd,输入npm run start,浏览器输入:http://localhost:9100/

Kibana运行:打开bat,然后地址栏是http://localhost:5601

es看做数据库,索引看做库,文档看做数据

下图是一个索引的5个分片p0...p4,以及他们的副本r0....r4

 

 

【倒排索引】

内存里是Trie 树,找到term index后,去term dic里面找term,注意term dic是有顺序的,再找到包含该 term 的所有 文档 id,若是查多个term,则得到了多个文档list,出现次数最多的(权重最大)文档id就是要先找的文档

命令都采用restful风格

 ik分词器:

ik_smart会根据字典拆分成断句,在kibana输入:

GET _analyze
{
"analyzer": "ik_smart",
"text":"今天天气不错啊"
}

 

 ik_max_word:拆成所有可能的短句,可能重合:

 

 扩展词典让他认识更多的分词:在D:\aaa2222339\elasticsearch-7.6.1-windows-x86_64\elasticsearch-7.6.1\plugins\elasticsearch-analysis-ik-7.6.1\config新建ldp.dic,然后在IKAnalyzer.cfg.xml里面注册

analyzer如果是keyword,就没动,standard会拆分:

 

 

 

 

 

 

 创建索引并插入数据:/索引/类型/文档

PUT /test1/type1/1
{
"name":"asd",
"age":22
}

 


只创建库和规则:

 

 得到索引信息:GET 索引

获得其他信息:GET _cat/其他信息

修改数据(多加个_doc):

 

 删除索引:DELETE 库

简单查询:

 

 

 

 复杂查询:

使用match:先分词,再用or去查分词的倒排索引,它的效果是模糊匹配(不要设置type=keyword)

去“name”字段里面找符合条件的行

 

 

分页: 

 

 

 must:

 

 should:

 

 must_not:

 

 过滤满足条件的:

 

 

 

多条件模糊查询:

 

 

 使用term精确匹配,需要设置对应的字段类型为keyword

 原理:库中的字段name的type:text或者没有,则会先分词,再把存储分词的倒排索引;设置desc字段为keyword,整体存储为倒排索引,使用term会拿这个整体去倒排索引中去完全匹配,而使用match,会把query分词,再查询分词的倒排索引

 

 

 高亮查询:

 

 

 

 

 

posted @ 2022-05-31 15:52  Jary霸  阅读(307)  评论(0编辑  收藏  举报