随笔分类 - Elasticsearch
摘要:我们先写入三条演示数据 PUT /product/book/1 { "post_date": "2020-01-01", "title": "my first book" } PUT /product/book/2 { "post_date": "2020-01-02", "title": "my
阅读全文
摘要:1、什么是分词器 分词器是在建立倒排索引前的一系列操作,目的是提升召回率,增加能够搜索到的结果的数量 (1) character filter:分词前的预处理,比如过滤html标签,特殊符号转换成英文单词 <span>hello<span> --> hello I&you --> I and you
阅读全文
摘要:我们看看下面2个doc是怎么建立倒排索引的 doc1:I really liked my small dogs, and I think my mom also liked them. doc2:He never liked any dogs, so I hope that my mom will
阅读全文
摘要:1、exact value(精确匹配) 对"2020-01-01"进行精确搜索的时候,必须用关键字2020-01-01才能搜索出来,如果搜关键字01,是搜索不出来的 2、full text(全文索引) (1) 对"2020-01-01"进行全文索引时,搜关键字2017或01都是可以搜索出来的 (2)
阅读全文
摘要:1、query string语法 #1和2效果是一样的,查询test_type下test_field字段中包含test关键字的document (1) GET /test_index/test_type/_search?q=test_field:test (2) GET /test_index/te
阅读全文
摘要:1、分页搜索 语法 #搜索第1000页的10条数据 GET /test_index/test_type/_search?from=10000&size=10 2、什么是deep paging? 简单来说,就是分页搜索的特别深。比如有个index有3个primary shard,共60000条数据,每
阅读全文
摘要:所谓multi-index和multi-type搜索模式就是我们可以一次性搜索多个index和多个type下的数据 (1) /_search:所有索引,所有type下的所有数据都搜索出来 (2) /index1/_search:指定一个index,搜索其下所有type的数据 (3) /index1,
阅读全文
摘要:1、搜索结果分析 GET /_search took:整个搜索请求花费了1毫秒 hits.total:本次搜索,返回了1条结果 hits.max_score:本次搜索的所有结果中,最大的相关度分数是多少 hits.hits:默认查询前10条数据,完整数据,按_score降序排序 shards:这次查
阅读全文
摘要:1、bulk的执行过程 一次bulk请求可能包含了多个增删改document的操作,因此bulk的每个操作都可能要转发到不同的es node的primary shard去执行,这个过程就包含了json数据的传输。 2、假如采用比较良好的json数组格式 假如使用比较良好的json数组格式,会是这个样
阅读全文
摘要:简单说就是primary shard写完,会同步到replica shard上,两者最终可能会出现不一致的情况。那es是如何确定主副分片的写一致性的呢? 1、es5.0前,采用写入前检查存活shard的方式 (1)consistency 我们在发送任何一个增删改请求的时候,比如说put /produ
阅读全文
摘要:1、document路由到shard上是什么意思? 我们知道,1个index的数据会被分配到多个shard中,1个document只会被放到其中1个primary shard中。 也就是说,当我们创建document的时候,es就要决定这个document是放在这个index的哪个shard上,这个
阅读全文
摘要:使用bulk语法可以进行批量增删改操作,bulk语法有严格的要求,每个json串不能换行,两个json串必须换行,下面演示下 #删除 POST /_bulk { "delete": { "_index": "test_index", "_type": "test_type", "_id": "1"
阅读全文
摘要:1、为什么要批量查询 假如我们要查100个document,一个一个id查的话,需要发送100次网络请求,占用网络开销,用mget进行批量查询的话,只要发送1次网络请求,网络开销减小100倍。 2、mget的语法 (1) 同一index同一type GET /test_index/test_type
阅读全文
摘要:1、什么是并发冲突 举个例子,我跟你在淘宝在同一时间下单买了同一本书,两个线程同时去es扣这本书的库存,库存有100本书,正常情况扣完库存后应该变成98本,但如果两个线程并发冲突,就会变成这样 可以看到库存的值变成了99本,与我们期望中的98本不符。这一现象也叫超卖,对数据库的库存扣减的时候也会出现
阅读全文
摘要:1、什么是partial update? 我们用document的全量替换来对比一下partial update。全量替换时,我们需要把document里的所有field给到es进行替换,而partial update只需要把document id和需要更新的部分字段给到es就行,两种方式对docu
阅读全文
摘要:1、document的核心元数据 我们针对一次查询结果来解析它的元数据 (1) _index元数据 <1> 1个index等同于1张数据库表,index名称等同于表名 <2> index名称必须小写,不能用下划线开头,不能包含逗号 (2) _type元数据 <1> 1个type等同于数据库表里的"类
阅读全文
摘要:1、index、document和shard的关系 (1) 1个index的多个document会被均匀分配到多个shard;每个shard都是一个最小工作单元,承载1个index的部分document。 (2) 1个document只存在于某1个primary shard以及其对应的replica
阅读全文
摘要:演示前先往es写入三条商品数据用来演示查询 PUT /product/book/1 { "product_name": "yuwen shu", "price": 20, "all_tags": ["bad","ugly"] } PUT /product/book/2 { "product_name
阅读全文
摘要:演示前先往es写入两条商品数据,接下来用各种查询方式来演示 PUT /product/book/1 { "product_name": "yuwen shu", "price": 20, "tags": ["boring","bad"] } PUT /product/book/2 { "produc
阅读全文
摘要:下面以一本书为1个document为例演示下es的CRUD 1、新增商品:新增document PUT /product/book/1 { "product_name" : "追风筝的人", "price" : 10, "tags": [ "忠诚", "赎罪" ] } 第一次新增document时e
阅读全文

浙公网安备 33010602011771号