虚拟机版本: CentOS 7
JDK版本:1.8(需提前安装好,保证 命令 "java -version" 有输出版本信息)
es版本: elasticsearch 7.6.2
kibana版本: kibana 7.6.2
从官网下载后解压运行,https://www.elastic.co/cn/downloads
下面的步骤是官网教程:https://www.elastic.co/guide/en/kibana/current/targz.html
curl -O https://artifacts.elastic.co/downloads/kibana/kibana-7.6.2-linux-x86_64.tar.gz
tar -xzf kibana-7.6.2-linux-x86_64.tar.gz
cd kibana-7.6.2-linux-x86_64/
./bin/kibana
启动成功
在浏览器中输入192.168.50.175:5601无法访问,需要修改config/kibana.yml
复制修改为绑定0.0.0.0
重新启动,访问成功
英文界面不太友好,kibana有支持i18n国际化,需要修改config/kibana.yml
如下
重启刷新页面
需要说明的是kibana文件中默认是访问当前机器的es9200端口,不在同一台机器中需要修改kibana.yml配置文件
新增一个文档
查询文档
// 分词-最小分词
GET /_analyze
{
"analyzer": "ik_smart",
"text": "郑某人爱椰子树"
}
// 分词-细粒度最大分词
GET /_analyze
{
"analyzer": "ik_max_word",
"text": "郑某人爱椰子树"
}
// 创建索引test1,类型type1(未来版本类型快被启用),id为1
PUT /test1/type1/1
{
"name":"david",
"age":"27"
}
// 创建索引test2和规则,mappings是指定阻断类型
PUT /test2
{
"mappings": {
"properties": {
"name":{
"type": "text"
},
"age":{
"type": "long"
},
"birthday":{
"type":"date"
}
}
}
}
GET /test2
PUT /test3/_doc/1
{
"name":"David",
"age":27,
"birthday":"1993-06-07"
}
GET /test3
// 获取es当前信息
GET /_cat/indices?v
// 覆盖修改,缺少field会清空
PUT /test3/_doc/1
{
"name":"David-123",
"age":27,
"birthday":"1993-06-07"
}
// 推荐使用后缀带_update的,不会删除不传的字段
POST /test3/_doc/1/_update
{
"doc":{
"name":"sunny"
}
}
// 删除索引,根据路径删除
DELETE /test1
PUT /david/user/4
{
"name":"david",
"age":18,
"birthday":"1999-06-07",
"tags":["小鲜肉","白净","帅哥"]
}
POST /david/user/1/_update
{
"doc":{
"name":"david-java"
}
}
GET /david/user/_search?q=name:david
// 查询,match匹配,_source筛选属性,sort排序, 分页from从第几条开始和size返回多少条数据
GET /david/user/_search
{
"query": {
"match": {
"name": "david"
}
},
"_source": ["nama","age"],
"sort":[
{
"age":{
"order":"desc"
}
}],
"from":"0",
"size":"2"
}
// 多条件查询,must多条件都要符合(must_not、not则反之),相当于and
GET /david/user/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"age": 18
}
},
{
"match": {
"name": "david"
}
}
]
}
}
}
// 多条件查询,should满足一个条件即可,相当于or
GET /david/user/_search
{
"query": {
"bool": {
"should": [
{
"match": {
"age": 18
}
},
{
"match": {
"name": "david"
}
}
]
}
}
}
// 条件过滤,filter根据返回过滤gte大于等于,lte小于等于
GET /david/user/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"name": "david"
}
}
],
"filter": {
"range": {
"age": {
"gte": 10,
"lte": 20
}
}
}
}
}
}
// 条件过滤,多条件空格分隔
GET /david/user/_search
{
"query": {
"match": {
"tags": "女 哥"
}
}
}
// 字段类型对分词器的影响,keyword被当做一个整体不会拆分,standard会拆分
GET _analyze
{
"analyzer": "keyword",
"text": "david is good boy"
}
GET _analyze
{
"analyzer": "standard",
"text": "david is good boy"
}
// 创建指定类型的字段,测试字段类型对分词器的影响
PUT /testdb
{
"mappings": {
"properties": {
"name":{
"type": "keyword"
},
"desc":{
"type": "text"
}
}
}
}
// 插入数据
PUT /testdb/_doc/2
{
"name":"david2",
"desc":"david is good boy2"
}
// 测试term对类型keyword不会被分词器解析
GET /testdb/_search
{
"query":{
"term": {
"name": "david"
}
}
}
// 插入数据
PUT /testdb/_doc/4
{
"t1":"11",
"t2":"2020-4-18"
}
// 高亮,查询内容会被标签包裹
GET /david/user/_search
{
"query": {
"match": {
"name": "david"
}
},
"highlight": {
"fields": {
"name":{}
}
}
}
// 自定义高亮,查询内容会被标签包裹
GET /david/user/_search
{
"query": {
"match": {
"name": "david"
}
},
"highlight": {
"pre_tags": "<p class='highlight' style='color:red'>",
"post_tags": "</p>",
"fields": {
"name":{}
}
}
}