写在前面:
1.谷歌浏览器对中文的支持不太好,写DSL语句不方便,建议使用Firefox浏览器写
2.语句结束不能写分号
3.数据库和kibana比较
kibana软件–>mysql软件
索引库Indices–>数据库
类型Types–>数据库表
文档Document–>数据库表里一行一行数据
字段Fields --> 数据库表里每一条记录都有的多个字段
mapping是对字段的一种规则,如某个字段的数据类型、默认值、分析器、是否被索引等等,
下面注释中出现的域就是字段的意思
#获取所有索引库的信息
GET _cat/indices
#删除索引库
DELETE /skulist
#新增索引库
PUT /skulist
#添加映射
#put /指定索引库/类型Types/_mapping表示添加映射 {映射属性}
PUT /skulist/sku/_mapping
{
"properties": {
"name":{
"type": "text",
"analyzer": "ik_smart",
"search_analyzer": "ik_smart",
"store": false
},
"city":{
"type": "text",
"analyzer": "ik_smart",
"search_analyzer": "ik_smart",
"store": false
},
"age":{
"type": "long",
"store": false
},
"description":{
"type": "text",
"analyzer": "ik_smart",
"search_analyzer": "ik_smart",
"store": false
}
}
}
#添加文档数据 id为1
PUT /skulist/sku/1
{
"name":"李四",
"age":22,
"city":"深圳",
"description":"李四来自湖北武汉!"
}
#添加文档数据 id为2 添加字段address
PUT /skulist/sku/2
{
"name":"赵子龙",
"age":77,
"city":"广州",
"description":"赵子龙来自深圳宝安,但是在广州工作!",
"address":"广东省茂名市"
}
#更新数据 新增数据 删除原始数据
PUT /skulist/sku/1
{
"name":"李四",
"age":23
}
#更新数据 #更新数据 直接修改指定域的数据
POST /skulist/sku/1/_update
{
"doc":{
"name":"李四",
"age":23
}
}
#删除数据
DELETE /skulist/sku/1
#根据id查询数据
GET /skulist/sku/1
#查询所有数据
GET _search
#查询指定索引库或类型的所有数据
GET /skulist/_search
GET /skulist/sku/_search
#搜索排序
#match_all:查询所有
#sort: 排序
#age:指定排序的字段
#order:排序规则 desc asc
GET /skulist/sku/_search
{
"query":{
"match_all": {}
},
"sort":{
"age":{
"order":"desc"
}
}
}
#分页查询
#from:开始页
#size:每页显示条数
GET /skulist/sku/_search
{
"query":{
"match_all": {}
},
"sort":{
"age":{
"order":"desc"
}
},
"from": 0,
"size": 1
}
#词项搜索Term
GET _search
{
"query":{
"term": {
"city": {
"value": "武汉"
}
}
}
}
#多项词项搜索Terms
GET _search
{
"query":{
"terms": {
"city":[
"武汉",
"深圳"
]
}
}
}
#范围过滤-range
#gt表示> gte表示=>
#lt表示< lte表示<=
GET _search
{
"query":{
"range": {
"age": {
"gte": 30,
"lte": 57
}
}
},
"sort": [
{
"age": {
"order": "desc"
}
}
]
}
#exists:是指包含某个域的数据检索
GET _search
{
"query": {
"exists":{
"field":"address"
}
}
}
#过滤搜索 bool
#搜索在深圳的用户,且年龄在19-79之间 降序排列
#must : 多个查询条件的完全匹配,相当于 and。
#must_not : 多个查询条件的相反匹配,相当于 not。
#should : 至少有一个查询条件匹配, 相当于 or。
GET _search
{
"query": {
"bool": {
"must": [
{
"term": {
"city": {
"value": "深圳"
}
}
},
{
"range":{
"age":{
"gte":19,
"lte":79
}
}
}
]
}
},
"sort": [
{
"age": {
"order": "desc"
}
}
]
}
#查询所有 match_all
GET _search
{
"query": {
"match_all": {}
}
}
#字符串匹配
GET _search
{
"query": {
"match": {
"description": "武汉"
}
}
}
#前缀匹配 prefix
GET _search
{
"query": {
"prefix": {
"name": {
"value": "赵"
}
}
}
}
#多个域匹配搜索
#description|city中有深圳的数据都搜索出来
GET _search
{
"query": {
"multi_match": {
"query": "深圳",
"fields": [
"city",
"description"
]
}
}
}