Kibana操作ElasticSearch

1、索引操作
1.1、新增索引

a、创建索引默认配置

PUT /索引名称
b、创建索引指定字段类型

put /索引名称/_mapping/typeName
{
    "properties":{
        "字段名":{
            "type":"类型", text keyword long short date integer object
            "index":true/false ,  是否索引 默认true
            "store":true/false, 是否存储 默认false
            "analyzer":"分词器" 设置ik_max_word ik
        }    
    }
}
{
    "settings": {
        "number_of_shards": 5,
        "number_of_replicas": 1
    },
    "mappings": {
        "user": {
            "properties": {
                "id": {
                    "type": "long",
                    "index": false,
                    "store": true
                },
                "name": {
                    "type": "text"
                },
                "nickname": {
                    "type": "keyword"
                },
                "age": {
                    "type": "integer"
                },
                "money": {
                    "type": "double"
                },
                "brithday": {
                    "type": "date"
                },
                "flag": {
                    "type": "boolean"
                },
                "address": {
                    "properties": {
                        "city": {
                            "type": "text"
                        }
                    }
                }
            }
        }
    }
}
1.2、删除索引

DELETE 索引名称

1.3、查看索引
  • 查看索引配置: GET /索引名称/_settings
  • 查看索引映射 GET /索引名称/类型/_mapping
  • 查看所有所有索引配置 GET _all/_settings
2、文档操作
2.1、新增文档

新增文档_不带id(随机生成id)

POST /索引名称/类型
{
}

新增文档_带id

PUT /索引名称/类型/1
{
}

2.2、删除文档

DELETE /s1/user/1

2.3、查看文档

GET /索引名称/类型名称/id值

查看指定字段

GET /s1/user/1?_source=name,age

2.4、修改文档

PUT请求覆盖(不常用),PUT表示修改,不会修改id的值

id不存在,则会新增这条数据
id存在,则修改这条数据

POST不覆盖

POST /s1/user/s1R0TIwBUgvZMvyZVzzG/_update
{
  "doc": {
    "age":30
  }
}
3、基本查询
3.1、match_all(查询所有)
语法:
GET /索引名称/_search
{
	"query":{
		"查询类型":{
			"查询条件" : "查询条件的取值"
		}
	}
}
查询类型: 表示取值为: match_all、match、term(分词查)等。
查询条件: 查询条件会根据类型来做数据的获取操作。
案例:
GET /s1/user/_search
{
  "query": {
    "match": {
      "name": "wangwu"
    }
  },
  "sort": [
    {
      "id": {
        "order": "desc"
      }
    },
    {
      "age": {
        "order": "desc"
      }
    }
  ],
  "from": 0,
  "size": 20,
  "highlight": { //表示声明定义高亮处理
    "pre_tags": "", //表示前缀标签
    "post_tags": "",//表示后缀标签
    "fields": {//将该高亮处理作用在哪一个字段上
      "nickname":{} 
    }
  }
}
3.2、term(词条匹配)

查询被用于精准匹配查,可以匹配: 数字、时间、字符串、布尔等等
相当于mysql: select * from user where username = ‘admin’;

GET /s1/user/_search
{
  "query": {
    "term": {
		"username":"admin"
	}
  }
}
3.3、range(范围查询)

查询在指定区间的数据

GET /s1/user/_search
{
  "query": {
    "range": {
		"age": {
			"gte":1000, 
			"lte": 4000
		}
	}
  }
}
  • gte: 大于等于
    lte: 小于等于
    gt: 大于
    lt: 小于
3.4、fuzzy(模糊查询)

每一个词条的模糊,词条是否包含模糊的语句

GET /s1/user/_search
{
  "query": {
    "fuzzy": {
		"title": "Apple"
	}
  }
}
4、进阶查询
4.1、source

默认情况下es将结果保存在_source属性中。
通过编程方式来对_source中的数据进行过滤。
查询指定字段:

GET /s1/user/_search
{
  "_source": ["title", "price"], //用来指定被查询结果展示的数据字段
  "query": {
    "fuzzy": {
		"title": "Apple"
	}
  }
}

includes: 显示哪些字段
excludes: 不显示哪些字段

GET /s1/user/_search
{
  "_source": {
  	"includes": ["title", "price"] //最终要展示的字段列表
  }, 
  "query": {
    "fuzzy": {
		"title": "Apple"
	}
  }
}
4.2、filter

es使用查询获取一组查询的结果,然后通过filter可以实现结果的过滤。
a、条件查询中进行过滤
bool属性来指定查询条件,还可以在该字段中指定结果的过滤,通过filter属性来声明。

GET /s1/user/_search
{
    "query": {
        "bool": {
            "filter": {
                "range": {
                    "price": {
                        "gte": 10,
                        "lte": 20
                    }
                }
            },
            "must": {
                "match": {
                    "title": "小米手机"
                }
            }
        }
    }
}

b、无查询条件直接过滤

GET /s1/user/_search
{
  "query": {
    "constant_score": {
      "filter": {
        "range": {
          "price": {
            "gte": 10,
            "lte": 20
          }
        }
      }
    }
  }
}

你可能感兴趣的:(Java,java)