1.基本概念
- 索引(库):index 索引,相当于 database,用于管理所有的数据。
- 类型:type类型,相当于 table。
2. 基于RESTFul Api操作
2.1 索引管理
- 创建索引:相当于数据库
PUT 索引名
{
}
- 查询索引
GET 索引名
- 删除索引
DELETE 索引名
2.2 映射操作
- 创建
PUT 索引名/_mapping/类型
{
"properties" : {
"字段": {
"参数名": "参数值"
}
}
}
参数名 : type,表示类型
参数值:
字符串:text(可分词)、keyword(不可分词)
数值
时间
2.2.1 查看映射
GET 索引号/_mapping
2.3 数据操作
2.3.1 添加数据:无id
POST _index/_type
{
"属性":"值",
"属性2:"值2
}
2.3.2 添加或更新数据:有id
- 如果id存在将更新,如果不存在,将添加
PUT _index/_type/id
{
"属性":"值",
"属性2:"值2
}
2.3.3 删除数据
DELETE _index/_type/id
2.4 查询操作
2.4.1 通过id查询
- 通过id查询所有 (select * from book where id = ?)
GET _index/_type/id
- 通过id查询部分 ( select title,price from book where id = ?)
GET _index/_type/id?_source=字段,字段2
2.4.2 查询所有
- 所有索引库,查询操作,查询所有
GET _search
{
"query" : {
"match_all" : {
}
}
}
GET _search
2.4.3 关键字查询
- 使用match 处理条件
GET _index/_search
{
"query" : {
"match" : {
字段名: 值
}
}
}
- title 类型 text,表示支持分词,只要与“jpg”部分词相同,就可以查询出来
2.4.4 复合查询:must (交集 and)
- 使用 bool 进行多条件拼凑
- 采用 must 、must_not 进行数据过滤
- must 确定留下的数据
- must_not 确定不需要的数据
#采用多条件进行查询,查询title为 “Java编程思想”
GET czxy/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"title": "Java编程思想"
}
}
],
"must_not": [
{
"match": {
"title": "PHP"
}
}
]
}
}
}
2.4.5 复合查询:should (并集 or)
GET czxy/_search
{
"query": {
"bool": {
"should": [
{
关键字查询
},
....
]
}
}
}
2.4.6 精准查询:term
- 注意:精准查询指定数据类型(数值、布尔、未分词字符串)
GET _index/_search
{
"query": {
"term" : {
字段
}
}
}
-
结论
- 如果数据未分词,且需要精准查询,使用term
- 普通查询,对数据进行分词处理,使用match
2.4.7 范围查询:range
GET 索引库/_search
{
"query": {
"range": {
"字段": {
gt : "大于",
lt : "小于",
gte : "大于或等于",
lte : "小于或等于"
}
}
}
}
2.4.8 排序: sort
GET czxy/_search
{
"query": {
"match_all": {
}
},
"sort" : {
"字段": {
"order" : "排序" //asc 、desc
}
}
}
2.4.9 分类:from + size
GET czxy/_search
{
"query": {
"match_all": {
}
},
"from" : 0, //开始索引号,从0开始的
"size" : 2 //每页的个数
}