ElasticSearch


1、ElasticSearch

1.1.概念 

 

1.2.ElasticSearch与MySQL的比较

  • MySQL有事务性,而ElasticSearch没有事务性,所以你删了的数据是无法恢复的。
  • ElasticSearch没有物理外键这个特性, ,如果你的数据强一致性要求比较高,还是建议慎用
  • ElasticSearch和MySql分工不同, MySQL负责存储数据, ElasticSearch负责搜索数据 

1.3.为什么要使用Elasticsearch?​

因为在我们商城中的数据,将来会非常多,所以采用以往的模糊查询,模糊查询前置配置,会放弃索引,导致商品查询是全表扫面,在百万级别的数据库中,效率非常低下,而我们使用ES做一个全文索引,我们将经常查询的商品的某些字段,比如说商品名,描述、价格还有id这些字段我们放入我们索引库里,可以提高查询速度。 

2.倒排索引

2.1.Elasticsearch中的倒排索引是什么? 

倒排索引:将各个文档中的内容,进行分词,形成词条。然后记录词条和数据的唯一标识(id)的对应关系,形成的产物 。

倒排索引是搜索引擎的核心。搜索引擎的主要目标是在查找发生搜索条件的文档时提供快速搜索。倒排索引是一种像数据结构一样的散列图,可将用户从单词导向文档或网页。它是搜索引擎的核心。其主要目标是快速搜索从数百万文件中查找数据。

2.2.ElasticSearch数据的存储和搜索原理

2.3.数据库查询存在的问题

1. 性能低:使用模糊查询,左边有通配符,不会走索引,会全表扫描,性能低
2. 功能弱:如果以”华为手机“作为条件,查询不出来数据

2.4. ElasticSearch的相关内容

索引 (indices) -----> database

文档类型(type) ----> table ,(文档类型官方9版本以后会删除,7版本给了默认值 _doc)

文档(document) -----> 行数据

域(field) ------> column 列

映射(mapping) -----> 添加数据库表的列的时候指定的列的相关属性。

2.4.支持restful风格

Restful风格就是【同一个url】根据请求方式的不同,实现不同的功能。

GET----->查询

POST--->新增

PUT---->修改

DELETE-->删除

 2.5.相关API

(1)MatchAllQuery:查询所有

(2)TermQuery:根据用户输入的关键字,和词条进行完全等值匹配,如果有服务的词条则返回对应的数据。

(3)MatchQuery:先把keywords进行分词,然后拿着分词的结果再和索引中的词条进行匹配,匹配成功后,可以根据你指定的方式来取交集/并集,查询的是一个域中的词条

(4)RangeQuery:范围查询,有什么用, 价格查询 20000-30000

(5)QueryString:先把keywords进行分词,然后拿着分词的结果再和索引中的词条进行匹配,匹配成功后,可以根据你指定的方式来取交集/并集,同时可以查询多个域的词条。 一个关键字,查询匹配多个域。

(6)boolQuery:对多个查询条件连接。连接方式:
must(and):条件必须成立
must_not(not):条件必须不成立
should(or):条件可以成立
filter:条件必须成立,性能比must高。不会计算得分

-------以上需要重点掌握

WildcardQuery

RegexpQuery

PrefixQuery

 

MatchQuery:

 

 QueryString:

 

 boolQuery:

原文地址:https://www.cnblogs.com/aaaazzzz/p/12736090.html