/bin/elasticsearchhtml
浏览器访问: http://localhost:9400/_count?pretty请求文档数量,?pretty表示格式化输出web
一个 Elasticsearch 集群能够 包含多个索引 ,相应的每一个索引能够包含多个类型。 这些不一样的类型存储着多个文档 ,每一个文档又有多个属性数据库
索引(名词):数组
如前所述,一个 索引 相似于传统关系数据库中的一个 数据库 ,是一个存储关系型文档的地方。 索引 (index) 的复数词为 indices 或 indexes 。
索引(动词):浏览器
索引一个文档 就是存储一个文档到一个 索引 (名词)中以便它能够被检索和查询到。这很是相似于 SQL 语句中的 INSERT 关键词,除了文档已存在时新文档会替换就文档状况以外。
倒排索引:并发
关系型数据库经过增长一个 索引 好比一个 B树(B-tree)索引 到指定的列上,以便提高数据检索速度。Elasticsearch 和 Lucene 使用了一个叫作 倒排索引 的结构来达到相同的目的。
一个文档必须包含三个元数据:elasticsearch
_index 索引 _type 对象类别 _id 文档标识
POST http://localhost:9400/megacorp/employee/1 { "first_name" : "Douglas", "last_name" : "Fir", "age" : 35, "about": "I like to build cabinets", "interests": [ "forestry" ] }
若是指定的ID的文档已经存在的话,将会覆盖这个ID的文档数据分布式
若是数据没有天然的ID,ElasticSearch能够自动生成ID,这时应该以下增长数据:ide
POST http://localhost:9400/megacorp/employee/ { "title": "My second blog entry", "text": "Still trying this out...", "date": "2014/01/01" }
若是想在对应的ID不存在时才进行索引文档的话,增长_create或者设置op_type为create以下操做:ui
POST http://localhost:9400/megacorp/employee/1/_create or POST http://localhost:9400/megacorp/employee/1/_create?op_type=create
同建立时的PUT方法,增长_update表示更新文档一部分 能够增长?version参数进行并发下的冲突处理
POST /website/blog/1/_update { "doc" : { "tags" : [ "testing" ], "views": 0 } }
DELETE http://localhost:9400/megacorp/employee/1
GET http://localhost:9400/megacorp/employee/_search
HEAD /megacorp/employee/1
GET /megacorp/employee/_search
返回结果放在数组 hits 中。一个搜索默认返回十条结果。
能够将简单的搜索条件放到url中:
GET http://localhost:9400/megacorp/employee/_search?q=first_name:John
简单查询
GET /megacorp/employee/_search { "query" : { "match" : { "last_name" : "Smith" } } }
增长过滤查询
GET /megacorp/employee/_search { "query" : { "bool": { "must": { "match" : { "last_name" : "smith" } }, "filter": { "range" : { "age" : { "gt" : 30 } } } } } }
短语匹配match_phrase 和match的区别:match_phrase会明确匹配查询的条件,不会进行分词查询,match会分词查询
高亮查询
查询结果会在句子中匹配的词组增长<em>标签包裹,
详细高亮查询:高亮查询
GET /megacorp/employee/_search { "query" : { "match_phrase" : { "about" : "rock climbing" } }, "highlight": { "fields" : { "about" : {} } } }
查询能够指定timeout时间
GET /_search?timeout=10ms
查询分页
GET /_search?size=5 GET /_search?size=5&from=5 GET /_search?size=5&from=10
在分布式系统中深度分页
理解为何深度分页是有问题的,咱们能够假设在一个有 5 个主分片的索引中搜索。 当咱们请求结果的第一页(结果从 1 到 10 ),每个分片产生前 10 的结果,而且返回给 协调节点 ,协调节点对 50 个结果排序获得所有结果的前 10 个。
如今假设咱们请求第 1000 页--结果从 10001 到 10010 。全部都以相同的方式工做除了每一个分片不得不产生前10010个结果之外。 而后协调节点对所有 50050 个结果排序最后丢弃掉这些结果中的 50040 个结果。
能够看到,在分布式系统中,对结果排序的成本随分页的深度成指数上升。这就是 web 搜索引擎对任何查询都不要返回超过 1000 个结果的缘由。