Elasticsearch系列——使用kibana或postman操作Elasticsearch的常用命令(一)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: Elasticsearch系列——使用kibana或postman操作Elasticsearch的常用命令(一)

前言

服务器:CentOS-6.7

运行系统:windows10

JDK版本:1.8

Elasticsearch版本:5.6.6

插件:kibana、elasticsearch-head

工具:postman


一、集群

查看集群是否健康

GET /_cluster/health

二、节点

查看节点列表

后面加了 ?v 可以把表头给显示出来

GET /_cat/nodes?v

三、索引

1 查询索引

1.1 查询所有索引

GET /_cat/indices?v


1.2 查询单个索引的映射

GET /test_index/_mapping

2. 添加一个索引(通过mapping)

PUT /people
{
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 1
  },
  "mappings": {
    "man": {
      "dynamic": "strict",
      "properties": {
        "name": {
          "type": "text"
        },
        "age": {
          "type": "integer"
        },
        "birthday": {
          "type": "date",
          "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
        },
        "address":{
          "dynamic": "true",
          "type": "object"
        }
      }
    }
  }
}


"dynamic": "strict"  表示如果遇到陌生field会报错

"dynamic": "true"   表示如果遇到陌生字段,就进行dynamic mapping

"dynamic": "false"   表示如果遇到陌生字段,就忽略

3. 删除索引

3.1 删除一个索引

DELETE /people

3.2 删除多个索引

DELETE /index_one,index_two

4. 添加字段映射

1. PUT /people/_mapping/man
2. {
3. "properties": {
4. "tags":{
5. "type": "text"
6.     }
7.   }
8. }

5. 索引的别名

5.1 创建索引的别名

PUT /test_index/_alias/test

5.2 查询索引的别名

GET /test_index/_alias/*

5.3 查询别名指向哪一个索引

GET /*/_alias/test

四、文档

1. 增加文档

1.1 自定义ID

可以自动创建索引、类型,自己定义一个id

PUT /people/man/1
{
  "name": "叶良辰",
  "country": "china",
  "age": 25,
  "birthday": "1993-01-01",
  "desc": "叶良辰,本地人,狂妄自大,惹了他,会有一百种方法让你呆不下去!与赵日天是好基友,两个人风风火火闯九州"
}

1.2 随机生成ID

可以自动创建索引、类型,自动创建一个id

POST /people/man
{
  "name": "叶良辰",
  "country": "china",
  "age": 25,
  "birthday": "1993-01-01",
  "desc": "叶良辰,本地人,狂妄自大,惹了他,会有一百种方法让你待不下去!与赵日天是好基友,两个人风风火火闯九州"
}

2. 修改文档

2.1全文修改

全文修改使用的是PUT命令,把所有字段都带上

PUT /people/man/1
{
  "name": "叶良辰",
  "country": "china",
  "age": 25,
  "birthday": "1993-01-01",
  "desc": "叶良辰,本地人,狂妄自大,惹了他,会有一百种方法让你呆不下去!与赵日天是好基友,两个人风风火火闯九州"
}

2.2部分修改(partial update)

使用POST命令,里面使用doc修改某个字段值

POST /people/man/1/_update
{
  "doc": {
    "name": "zhangsan"
  }
}

2.3 通过脚本直接修改

1. POST /people/man/1/_update
2. {
3. "script": "ctx._source.age += 10"
4. }

或者

POST /people/man/1/_update
{
  "script": {
    "lang": "painless",
    "source": "ctx._source.age += 10"
  }
}

2.4 通过脚本的参数方式

POST /people/man/1/_update
{
  "script": {
    "lang": "painless",
    "source": "ctx._source.age = params.age",
    "params": {
      "age": 100
    }
  }
}

2.5 通过groovy脚本文件方式

首先在%ES_HOME%/config/scripts文件夹下面新建一个groovy文件,取名add-age.groovy


编辑文件,添加下列内容

ctx._source.age += param.num

执行下面的命令

POST /people/man/1/_update
{
  "script": {
    "lang": "groovy",
    "file": "add-age",
    "params": {
      "num": 15
    }
  }
}

2.6 文档不存在时的修改(upsert)

在修改document的时候,如果该文档不存在,则使用upsert操作进行初始化

POST people/man/1/_update
{
  "script": "ctx._source.age += 10", 
  "upsert": {
    "age": 20
  }
}

虽然用了+=,但是,上面的结果却是20,因为文档不存在,只是进行了初始化!

3. 删除文档

3.1 删除单个文档

DELETE /people/man/1


3.2 删除type下的所有文档

POST /people/man/_delete_by_query?conflicts=proceed
{
  "query": {
    "match_all": {}
  }
}

4.查询文档

下面列举一些简单的查询,更高级的查询在第五部分做介绍

4.1 查询单个文档

GET /people/man/2

4.2 使用_mget批量查询文档

GET /_mget
{
  "docs": [
      {
        "_index": "people",
        "_type": "man",
        "_id": 1
      },
      {
        "_index": "people",
        "_type": "man",
        "_id": 2
      }
    ]
}

index和type相同的时候,可以合并到一起:

GET /people/man/_mget
{
  "docs": [
      {
        "_id": 1
      },
      {
        "_id": 2
      }
    ]
}

4.3 查询所有文档

1. 方式一(简单查询):
2. GET /people/_search
方式二:
POST /people/_search
{
  "query": {
    "match_all": {}
  }
}

4.4 查询出某些字段内容

后面跟了 ?_source=field1,field2

GET people/man/_search?_source=name,country
{
  "query": {
    "match": {
      "age": "25"
    }
  }
}

4.5 查询多个索引下的多个type

GET /index1,index2/type1,type2/_search

查询所有索引下的部分type

GET /_all/type1,type2/_search

4.6 模糊查询(全文搜索)

注意:下面的“叶良辰”会被拆分成:叶、良、辰,只要name里面包含这三个字的任意一个,都会被查询到!

另外,中英文搜索会不一样,中文是以一个汉字为单位,

英文默认以一个单词为单位进行拆分

POST /people/_search
{
  "query": {
    "match": {
      "name": "叶良辰"
    }
  },
  "sort": [
    {
      "birthday": {
        "order": "desc"
      }
    }
  ]
}

4.7 全文搜索的精准度

4.7.1 搜索结果中必须包括run、jump两种爱好

GET people/_search
{
  "query": {
    "match": {
      "hobby": {
        "query": "run jump", 
        "operator": "and"
      }
    }
  }
}

4.7.2 使用百分比,搜索结果中必须包括6个爱好中的一半,也就是3个

GET people/_search
{
  "query": {
    "match": {
      "hobby": {
        "query": "run jump basketball football piano pingpang", 
        "minimum_should_match": "50%"
      }
    }
  }
}

4.7.3 使用数量,搜索结果中必须包括3个爱好

GET people/_search
{
  "query": {
    "bool": {
      "should": [
        {"match": {
          "hobby": "basketball"
        }},
        {"match": {
          "hobby": "pingpang"
        }},
        {"match": {
          "hobby": "piano"
        }},
        {"match": {
          "hobby": "run"
        }}
      ],
      "minimum_should_match": 3
    }
  }
}

五、高级查询

由于内容比较多,篇幅比较大,这里把文章分为两部分,本文是简单的增删改查

比较复杂的查询请参考:点击打开链接

OK,GAME OVER!

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
2月前
|
数据可视化 Java Windows
Elasticsearch入门-环境安装ES和Kibana以及ES-Head可视化插件和浏览器插件es-client
本文介绍了如何在Windows环境下安装Elasticsearch(ES)、Elasticsearch Head可视化插件和Kibana,以及如何配置ES的跨域问题,确保Kibana能够连接到ES集群,并提供了安装过程中可能遇到的问题及其解决方案。
Elasticsearch入门-环境安装ES和Kibana以及ES-Head可视化插件和浏览器插件es-client
|
17天前
|
存储 监控 安全
|
1月前
|
自然语言处理 搜索推荐 关系型数据库
elasticsearch学习六:学习 全文搜索引擎 elasticsearch的语法,使用kibana进行模拟测试(持续更新学习)
这篇文章是关于Elasticsearch全文搜索引擎的学习指南,涵盖了基本概念、命令风格、索引操作、分词器使用,以及数据的增加、修改、删除和查询等操作。
21 0
elasticsearch学习六:学习 全文搜索引擎 elasticsearch的语法,使用kibana进行模拟测试(持续更新学习)
|
1月前
|
存储 JSON Java
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
这篇文章是关于Elasticsearch的学习指南,包括了解Elasticsearch、版本对应、安装运行Elasticsearch和Kibana、安装head插件和elasticsearch-ik分词器的步骤。
117 0
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
|
1月前
|
运维 监控 数据可视化
大数据-171 Elasticsearch ES-Head 与 Kibana 配置 使用 测试
大数据-171 Elasticsearch ES-Head 与 Kibana 配置 使用 测试
63 1
|
2月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
2月前
|
JSON 自然语言处理 数据库
ElasticSearch基础1——索引和文档。Kibana,RestClient操作索引和文档+黑马旅游ES库导入
概念、ik分词器、倒排索引、索引和文档的增删改查、RestClient对索引和文档的增删改查
ElasticSearch基础1——索引和文档。Kibana,RestClient操作索引和文档+黑马旅游ES库导入
|
3月前
|
数据可视化 Docker 容器
一文教会你如何通过Docker安装elasticsearch和kibana 【详细过程+图解】
这篇文章提供了通过Docker安装Elasticsearch和Kibana的详细过程和图解,包括下载镜像、创建和启动容器、处理可能遇到的启动失败情况(如权限不足和配置文件错误)、测试Elasticsearch和Kibana的连接,以及解决空间不足的问题。文章还特别指出了配置文件中空格的重要性以及环境变量中字母大小写的问题。
一文教会你如何通过Docker安装elasticsearch和kibana 【详细过程+图解】
|
3月前
|
消息中间件 监控 Kafka
Filebeat+Kafka+Logstash+Elasticsearch+Kibana 构建日志分析系统
【8月更文挑战第13天】Filebeat+Kafka+Logstash+Elasticsearch+Kibana 构建日志分析系统
202 3
|
3月前
|
自然语言处理 Docker 容器
ElasticSearch 实现分词全文检索 - ES、Kibana、IK分词器安装
ElasticSearch 实现分词全文检索 - ES、Kibana、IK分词器安装
53 0