什么?
基于Luncene的搜索服务器。用Java开发的,主要解决mysql性能低、功能有限的问题。
mysql是关系型数据库 like ‘%小区%’
如果使用模糊查询,左边有通配符,不会走索引,会全表扫描,性能低。
功能有限:有些电商的多个模糊搜索单个sql不太好做。
mysql有些情况下索引失效了,没有使用索引会使得效率低。同时数据量大,查询慢。这时一般用带有key-value形式的redis缓存或者专门擅长搜索的ES。
document————————》index(索引库)
ElasticSearch优点:
1、是一个分布式、高扩展、高实时的搜索与数据分析引擎。
2、基于Restful web接口
3、应用于 1 海量数据查询 2 日志数据分析 3 实时数据分析
与mysql一般一起用
ElasticSearch负责搜索数据,但是安全性性,不适合存储数据
mysql安全性高,用来存储数据,和部分CRUD
索引(index)
ElasticSearch存储数据的地方,可以理解成关系型数据库中的数据库概念。
映射(mapping)
mapping定义了每个字段的类型、字段所使用的分词器等。相当于关系型数据库中的表结构。
文档(document)
Elasticsearch中的最小数据单元,常以json格式显示。一个document相当于关系型数据库中的一行数据。
倒排索引(反向索引)
一个倒排索引由文档中所有不重复词的列表构成,对于其中每个词,对应一个包含它的文档id列表。
通过分词策略,形成词和文章的映射关系表,这种词典 映射表 就是倒排索引。
o(1) 复杂度 提高效率
底层 FST数据结构 空间占用小、查询速度快
=============
ElasticSearch的亮点除了各种各样的复杂问题简单化的查询、提高查询性能外;
它有这集群的特性,并天然支持分布式(封装好了分布式)
集群:多个人做一样的事
分布式:多个人做不一样的事
集群的好处:
系统高可用
分担请求的压力
分布式的好处:
系统高性能,高速度
分担存储和计算的压力
解耦
语法
查看详情 get /person002/_search 查看mappings get /person002/_mapping 查看所有索引 get _cat/indices 查看100条件记录 GET _search { "query": { "match_all": {} }, "from": 0, "size":100 } 查看具体_doc_id get /person002/_doc/8
应用
应用:智能客服、微博热点、百度搜索、外卖电商评价、翻译、广告推荐、机器学习、识别敏感信息
用哪些分词:
ik分词器
中文:
HanLP