随笔分类 - ElasticSeacrh
摘要:ES中的日期类型 Elasticsearch 在索引创建之前并不是必须要创建索引的mapping。关系型数据库的思维就是在于写入数据之前,并不强制创建表结构。我们不用事先声明字段名称,字段类型以及长度等属性就可以直接向一个不存在的表中直接写入数据。 Elasticsearch把这种特性称之为dyna
阅读全文
摘要:准备共享目录 mkdir /data/esbackupchown -R elasticsearch:elasticsearch /data/esbackupmount -t nfs 192.168.1.110:/data/esbackup /data/esbackupvi elasticsearch
阅读全文
摘要:配置查询 _cluster/settings_cluster/settings?flat_settings_cluster/settings?include_defaults_cluster/settings?include_defaults&flat_settings/_stats/fieldda
阅读全文
摘要:1、Doc Values 倒排索引在搜索包含指定term的doc时非常高效,但是在相反的操作时表现很差:查询一个文档中包含哪些term。具体来说,倒排索引在搜索时最为高效,但在排序、聚合等与指定filed相关的操作时效率低下,需要用doc_values。 倒排索引将term映射到包含它们的doc,而
阅读全文
摘要:时间和日期类型是我们作为开发每天都会遇到的一种常见数据类型。和Java中有所不同,Elasticsearch 在索引创建之前并不是必须要创建索引的mapping。关系型数据库的思维就是在于写入数据之前,并不强制创建表结构。我们不用事先声明字段名称,字段类型以及长度等属性就可以直接向一个不存在的表中直
阅读全文
摘要:关于 Elasticsearch 的查询缓存,你想知道的都在这里 原文地址Elasticsearch 中有多种查询缓存,当一个查询请求执行后,他可能会被缓存下来,但是哪些查询会被缓存,哪些不会缓存,缓存了什么内容,什么时候失效,手册中并没有很系统的阐述,并且文档中也存在一些疑点,导致整个查询缓存体系
阅读全文
摘要:为什么需要recovery?对于主分片来说,可能有一些数据没来得及刷盘;对于副分片来说,一是没刷盘,二是主分片写完了,副分片还没来得及写,主副分片数据不一致。1. 主分片recovery由于每次写操作都会记录事务日志(translog),事务日志中记录了哪种操作,以及相关的数据。因此将最后一次提交(
阅读全文
摘要:Elasticsearch索引(elasticsearch index)由一个或者若干分片(shard)组成,分片(shard)通过副本(replica)来实现高可用。一个分片(share)其实就是一个Lucene索引(lucene index),一个Lucene索引(lucene index)又由
阅读全文
摘要:整体流程: 数据写入buffer缓冲和translog日志文件中。当你写一条数据document的时候,一方面写入到mem buffer缓冲中,一方面同时写入到translog日志文件中。 buffer满了或者每隔1秒(可配),refresh将mem buffer中的数据生成index segmen
阅读全文
摘要:1、关于 Elasticsearch 分页查询,这几个问题经常被问到 问题1:想请问下,一次性获取索引上的某个字段的所有值(100 万左右),除了把 max_result_window 调大 ,还有没有啥方法? 问题2:关于 es 的分页,每次拿 20 条展示在前台,然后点击下一页,在查询后面的20
阅读全文
摘要:定义一个Search template 首先,我们来定义一个 search template 来看看它到底是什么东西。使用_scripts端点将模板存储在集群状态中。在 search template中使用的语言叫做 mustache。 POST _scripts/my_search_templat
阅读全文
摘要:source filtering我们可以通过 _source 来定义返回想要的字段: GET twitter/_search{ "_source": ["user", "city"], "query": { "match_all": { } }}返回的结果: "hits" : [ { "_index
阅读全文
摘要:准备数据为了更好地展示,我们首先来把我们之前的 twitter 的数据做一点小的修改。我们添加一个新的字段 DOB (date of birth),也就是生日的意思。同时,我们也对 province,city 及 country 字段的类型做了调整,并把它们作为 keyword。我们来做如下的操作:
阅读全文
摘要:准备数据创建索引为了说明介绍中提到的各种存储桶聚合,我们首先创建一个新的 “sports” 索引,该索引存储 “althlete” 文档的集合。 索引映射将包含诸如运动员的位置,姓名,等级,运动,年龄,进球数和场位置(例如防守者)之类的字段。 让我们创建映射: PUT sports{ "mappin
阅读全文
摘要:测试数据 测试index mappings PUT sports { "mappings" : { "properties" : { "birthdate" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ig
阅读全文
摘要:顾名思义,best_field就是获取最佳匹配的field,另个可以通过tie_breaker来控制其他field的得分,boost可以设置权重(默认都为1)。 下面从宏观上来讲的简单公式: score=best_field.score*boost+other_fields*boost.score*
阅读全文
摘要:##预设数据 POST test/_doc/1 { "name":"张三", "sex":"男", "score":70 } POST test/_doc/2 { "name":"李四", "sex":"女", "score":70 } POST test/_doc/3 { "name":"王五",
阅读全文
摘要:准备好数据为了说明问题的方便,我们首先在 Kibana 中使用如下的 bulk 指令来创建我们的 twitter 索引。 POST _bulk{ "index" : { "_index" : "twitter", "_id": 1} }{"user":"张三","message":"今儿天气不错啊,
阅读全文
摘要:Painless 脚本为我们的搜索带来了很多的方便和灵活性,但是在很多的实践中,我们需要认真地思考这个脚本是不是最有效的。特别是,当我们在 query 使用脚本时,我们需要特别注意。这是因为在搜索时,需要针对每个文档进行计算,当我们的文档的数量很大时,那么这个计算量将会是非常大,从而影响搜索的效率。
阅读全文
摘要:Index template 定义在创建新 index 时可以自动应用的 settings 和 mappings。 Elasticsearch 根据与 index 名称匹配的 index 模式将模板应用于新索引。这个对于我们想创建的一系列的 Index 具有同样的 settings 及 mappin
阅读全文