《ElasticSearch权威指南》读书笔记

ES是一个分布式可扩展的实时搜索和分析引擎。
使用场景:全文搜索,结构化数据,统计,查询定位,地理定位,自动完成,查找提示等

入门

ES基于lecene
lecene是个框架,需要使用java,并在程序中集成lucene
ES用java编写,在lecene基础上,使用restful API,无需了解lucene原理
而且是ES是分布式
ES从lucene上的抽象层发展起来

安装

先安装java
安装ES
安装sense

与ES通信

java api,ES内置
通过http向restful api传送json,curl

启程

ES是面向文档型数据库,而不是传统关系数据库
ES的数据格式是JSON
类比关系数据:
数据库-》表-》行-》列
索引-》类型-》文档-》字段
索引作为名称,类似关系型DB中数据库,做动词类似insert命令,关系型DB中的索引在ES中对应的是反向索引

基本搜索

存储文档:put /a/b/1 a为索引,b为类型,1是id
获取文档:get /a/b/1
delete删除,head查询是否存在,替换还是put
全体检索 get /a/b/_search
带关键字检索 get /a/b/_search?q=xx
DSL(领域特定语言)搜索,搜索条件为json串
带过滤的搜索,json中有filtered,下层为filter和match
全文搜索:_score代表相关性评分
短语整体匹配:match_phrase
高亮搜索:highlight,返回结果用<em></em>包住
汇总统计:aggs,类似sql中group by

搜索

空白搜索

不加搜索条件即可,默认只返回前10个结果
hits:匹配的文档。total代表匹配的数量,子hits中包括了index,type,id和具体结果
_score是相关性,没加查询条件就是1.max_score就是_score中最大值
took代表请求耗费的时间,单位毫秒
shards是参与查询的分片数,及成功和失败的个数
time_out告诉我们是否查询超时。我们可以在查询中设置这个参数。timeout不是终止查询,而是返回指定时间内已经查到的数据

多索引多类型

在/_search前添加路径,可以指定索引和类型
比如/gb,us/user,tweet/_search就是搜索索引gb和us中类型us及类型tweet的所有文档
size参数是每次返回的结果数,from是起始的结果编号
页码过大会有问题。因为请求最大100条,是每个节点都请求100条,然后再整体处理。

搜索api分两种,一种是精简版的,一种json的完整版
?q=a:b 查询所有字段a值为b的文档 +c:d 增加条件 -e:f 绝对不匹配条件
_all全匹配,在路径中可以使用
举例:字段name包括mary或john,date>2014-9-10,_all字段包含aggregations或geo
+name:(mary john) +date:>2014-09-10 +(aggregations geo)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Solr&ElasticSearch原理及应用 一、综述 搜索 http://baike.baidu.com/it...
    楼外楼V阅读 7,337评论 1 17
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,886评论 18 139
  • 今天看到网上流传着一篇神作《在我老家,女人小孩不上桌的家庭更兴旺》看后实在无语,实在不能想象这是一个以文字谋生的人...
    猫小九儿阅读 511评论 0 0
  • 一张一弛,文武之道。 昨天太累了,今天要注意休息。 休养生息,才能走的更远。
    天马一号阅读 143评论 0 1
  • 判断 最简单的判断逻辑是: 注意:condition两边与[]之间必须至少有一个空格 判断条件 shell中判断条...
    ifeelok0319阅读 142评论 0 0