Elasticsearch由浅入深(一)】的更多相关文章

什么是Elasticsearch 什么是搜索 百度:我们比如说想找寻任何的信息的时候,就会上百度去搜索一下,比如说找一部自己喜欢的电影,或者说找一本喜欢的书,或者找一条感兴趣的新闻(提到搜索的第一印象),百度 != 搜索 垂直搜索(站内搜索) 互联网的搜索:电商网站,招聘网站,新闻网站,各种app IT系统的搜索:OA软件,办公自动化软件,会议管理,日程管理,项目管理,员工管理,搜索“张三”,“张三儿”,“张小三”:有个电商网站,卖家,后台管理系统,搜索“牙膏”,订单,“牙膏相关的订单” 搜索,…
倒排索引组成结构以及索引不可变原因 对于倒排索引是非常适合用来进行搜索的它的结构:(1)包含这个关键词的document list(2)包含这个关键词的所有document的数量:IDF(inverse document frequency)(3)这个关键词在每个document中出现的次数:TF(term frequency)(4)这个关键词在这个document中的次序(5)每个document的长度:length norm(6)包含这个关键词的所有document的平均长度其实本质上主要是…
索引的基本操作 创建索引 PUT /{index} { "settings": {}, "mappings": { "properties": { } } } 创建索引示例: PUT /my_index { "settings": { , }, "mappings": { "my_type":{ "properties": { "my_field"…
相关度评分 TF&IDF算法 Elasticsearch的相关度评分(relevance score)算法采用的是term frequency/inverse document frequency算法,简称为TF/IDF算法. 算法介绍: relevance score算法:简单来说就是,就是计算出一个索引中的文本,与搜索文本,它们之间的关联匹配程度. TF/IDF算法:分为两个部分,IF 和IDF Term Frequency(TF): 搜索文本中的各个词条在field文本中出现了多少次,出现…
search api的基本语法 语法概要: GET /_search {} GET /index1,index2/type1,type2/_search {} GET /_search { , } http协议中get是否可以带上request body? HTTP协议,一般不允许get请求带上request body,但是因为get更加适合描述查询数据的操作,因此还是这么用了. 很多浏览器,或者是服务器,也都支持GET+request body模式 如果遇到不支持的场景,也可以用POST /_…
_search含义 _search查询返回结果数据含义分析 GET _search { , "timed_out": false, "_shards": { , , }, "hits": { , , "hits": [ { "_index": ".kibana", "_type": "config", "_id": "…
mget批量查询 批量查询的好处就是一条一条的查询,比如说要查询100条数据,那么就要发送100次网络请求,这个开销还是很大的如果进行批量查询的话,查询100条数据,就只要发送1次网络请求,网络请求的性能开销缩减100倍 mget批量查询的语法 GET _mget { "docs":[ { "_index":"test_index", "_type":"test_type", }, { "_ind…
Elasticsearch的基础分布式架构 Elasticsearch对复杂分布式机制的透明隐藏特性 Elasticsearch是一套分布式系统,分布式是为了应对大数据量. Elasticsearch隐藏了复杂的分布式机制: 分片:我们之前随随便便就将一些document插入到es集群中去了,我们没有关心过数据是如何进行分配的.数据到哪个shard中去了. 集群发现机制(cluster discovery):如果启动一个新的es进程,那么这个es进程会作为一个node并且发现es集群,然后自动加…
下面先简单描述一下mapping是什么? 自动或手动为index中的type建立的一种数据结构和相关配置,简称为mappingdynamic mapping,自动为我们建立index,创建type,以及type对应的mapping,mapping中包含了每个field对应的数据类型,以及如何分词等设置 当我们插入几条数据,让ES自动为我们建立一个索引 PUT /website/article/ { "post_date": "2019-08-21", "t…
基于_version进行乐观锁并发控制 先构造一条数据出来 PUT /test_index/test_type/ { "test_field": "test test" } 模拟两个客户端,都获取到了同一条数据 GET test_index/test_type/ { "_index": "test_index", "_type": "test_type", ", , "…