一,安装
直接在github找到elasticsearch-rtf,下载下来,解压
教程
二、概念
集群:一个或者多个节点组织在一起
节点:一个节点是集群中的服务器,由一个名字来标识,通常是一个随机的漫威角色名字
分片:将索引划分为多份的能力,允许水平分割和扩展容量,多个分片响应请求,提高性能和吞吐量
副本:创建分片的一份或多份的能力,在一个节点失败其余节点可以顶上
HTTP方法:刚开始是GET,POST,HEAD,后来又新增了五种 OPTIONS,PUT,DELETE,TRACE,CONNECT
倒排索引 :倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。带有倒排索引的文件我们称为倒排索引文件,简称倒排文件(inverted file)。
倒排索引待解决问题:1.大小写转换问题,如python和PYTHON 应该是同一个词
2.词干抽取,looking和look应该处理为一个词
3.分词,若屏蔽系统应该分词为“屏蔽”、“系统” 还是应该为“屏蔽系统”
4.倒排索引文件过大-压缩编码
二 基础
1 创建索引
一旦创建的索引,分片数是不可以改的,副本数可以改
PUT nga #创建索引
{
"settings": {
"index":{
"number_of_shards":5, #分片数
"number_of_replicas":1 #副本数
}
}
}
2 获取setting信息
GET nga/_settings #获取索引名为nga的setting信息
GET _all/_settings #获取所有索引的setting
GET .kibana,nga/_settings #获取指定索引的setting
3 修改setting
PUT nga/_settings
{
"number_of_replicas": 2
}
4 获取索引信息
#获取索引信息
GET _all
GET nga
5保存文档
PUT nga/job/1 #指明 索引/type/id 也可以写成PUT nga/job/ 将会自动成一个id
{
"title":"python分布式爬虫开发",
"salary_min":15000,
"city":"beijing",
"company":{
"name":"baidu",
"company":"beijingruanjianyuan"
},
"publish_date":"2017-8-21",
"comments":23
}
6 获取
GET nga/job/1 #指定id
GET nga/job/1?_source=title,city #指定id指定字段
GET nga/job/1?_source #获取指定id所有字段
7 修改
方式一、完全覆盖原有内容
PUT nga/job/1 #要指定id
{
"title":"python分布式爬虫开发",
"salary_min":15000,
"company":{
"name":"baidu",
"company":"beijingruanjianyuan"
},
"publish_date":"2017-8-21",
"comments":23
}
方式二:修改指定字段
POST nga/job/1/_update
{
"doc":{ #doc里面放的就是要修改的内容
"comments":5
}
}
7删除
1 删除文档
DELETE nga/job/1
2 删除索引
DELETE nga
3.删除index下的type里面的所有数据
POST lagou/testjob2/_delete_by_query?conflicts=proceed
{
"query": {
"match_all": {}
}
}
三、批量操作
查询type为job1且id为1,job2且id为2的数据,这个方法也可以查不同索引下的数据
GET _mget
{
"docs":[{
"_index":"testdb",
"_type":"job1",
"_id":1
},{
"_index":"testdb",
"_type":"job2",
"_id":1
}
]
}
查询相同index下的不同type还可以这样
GET testdb/_mget
{
"docs":[{
"_type":"job1",
"_id":1
},{
"_type":"job2",
"_id":1
}
]
}
如果type也相同
GET testdb/job1/_mget
{
"docs":[{
"_id":1
},{
"_id":2
}
]
}
这样的情况可以进一步简写:
GET testdb/job1/_mget
{
"ids":[1,2]
}
四、bulk批量操作
批量导入可以合并多个操作,比如index,delete,update,create等等,也可以从