一个集群是由一个或多个结点(服务器)组成的
一个节点是一个单一的服务器 (节点是集群的一部分)
一个索引就是含有某些相似特性的文档的集合, 在一个集群中,你可以根据自己的需求定义任意多的索引
一个文档是一个可被索引的数据的基础单元。例如,你可以给一个单独的用户创建一个文档,给单个产品创建一个文档,以及其他的单独的规则。这个文档用JSON格式表现,JSON是一种普遍的网络数据交换格式。
在一个索引或类型,你可以根据自己的需求存储任意多的文档。注意,虽然一个文档在物理存储上属于一个索引,但是文档实际上必须指定一个在索引中的类型。
语句:列出Elasticsearch中所有的索引 使用head插件来进行查询 http://localhost:9200/_cat/indices/
创建customer索引 的语句 http://localhost:9200/customer?pretty/
现在往customer索引中放点东西, 请求 将一个简单的顾客文档放入customer索引中,这个文档有一个id为1:
http://localhost:9200/customer/doc/1?pretty/
从上面我们可以看到,一个新的顾客文档已经在customer索引中成功创建。同时这个文档有一个自己的id,这个id就是我们在将文档加入索引时指定的。这里有一个重要的注意点,并不需要在将一个文档加入一个索引前明确的将这个索引预先创建好。在上面我们创建文档例子中,如果这个customer索引事先不存在,elasticsearch会自动创建customer索引。
索引和查询文档
found属性表示我们通过请求id为1发现了一个文档,还有另一个属性_source,_source属性返回我们在上一步中加入索引的完整json文档内容
在elasticsearch中访问数据的模式:这个模式可总结为以下形式:<REST Verb>/<Index>/<Type>/<ID>
修改你的数据
elasticsearch提供了近实时的数据操作和搜索能力,默认情况下,从你开始索引/更新/删除你的数据到出现搜索结果的时间会有一秒的延时(刷新间隔)。这个与其他的sql数据库平台在一个事务完成后立即获取到数据这一点上有很大的优势。
将文档放入索引/替换索引中的文档
当将文档加入索引时,ID部分并不是必须的。如果没有指定,Elasticsearch将会生产一个随机的ID,然后使用它去索引文档。实际Elasticsearch生成的ID(或者是我们明确指定的)将会在API调用成功后返回。 如下这个例子演示如何使用隐式的ID将一个文档加入索引:
当我们没有明确指定id的时候,我们需要使用post方法代替put来发送请求
添加后的记录内容
更新文档(更新时 所有字段的key - value 都用doc 括起来)
除了能够新增和替换文档,我们也可以更新文档。注意虽然elasticsearch在底层并没有真正更新文档,而是当我们更新文档时,elastic search首先去删除旧的文档,然后加入新的文档。将id为1的文档,name属性值改为“Jane Doe”
更新后的记录为
功能:更新之前id为1的文档, 修改name属性为"测试1" 同时添加age字段
更新后的记录数
更新操作也可以使用简单的脚本来执行。如下的示例使用一个脚本将age增加了5:
删除文档
删除一个文档操作相当的直截了当。如下的示例演示了如何删除我们之前ID为2的文档
删除后的记录 没有id为2的记录了
批处理操作 查询整个索引的语句http://192.168.100.101:9200/testxufeifei/ {"query": {"match_all": {} }}
查询索引中某个指定的数据类型 http://192.168.100.101:9200/testxufeifei/数据类型/ {"query":{"match_all":{}}}
关于返回结果,我们看到了如下的部分:
took
- Elasticsearch执行此次搜索所用的时间(单位:毫秒)timed_out
- 告诉我们此次搜索是否超时_shards
- 告诉我们搜索了多少分片,还有搜索成功和搜索失败的分片数量hits
- 搜索结果hits.total
- 符合搜索条件的文档数量hits.hits
- 实际返回的搜索结果对象数组(默认只返回前10条)hits.sort
- 返回结果的排序字段值(如果是按score进行排序,则没有)
按某个字段进行排序的查询语句(这个字段是_source里对应的字段,例如id就不可以)按照balance字段值进行升序排序
{"query": {"match_all": {}},"sort": [{"balance": "asc"}]}