Elasticsearch(四)——ES基本操作

这篇具有很好参考价值的文章主要介绍了Elasticsearch(四)——ES基本操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Rest风格说明(非常重要)

Rest风格一种软件架构风格,而不是标准,只是提供了一组设计原则和约束条件。 它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
基于Rest命令说明

method url地址 描述
PUT localhost:9200/索引名称/类型名称/文档id 创建文档(指定文档id)
POST localhost:9200/索引名称/类型名称 创建文档(随机文档id)
POST localhost:9200/索引名称/类型名称/文档id/_update 修改文档
DELETE localhost:9200/索引名称/类型名称/文档id 删除文档
GET localhost:9200/索引名称/类型名称/文档id 查询文档通过文档id
POST localhost:9200/索引名称/类型名称/_search 查询所有数据

二、删除索引图形化操作

elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据

elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据

三、创建索引

  1. 创建一个索引
PUT  /索引名/类型名/文档id(数据) 
{
    请求体
}

下图执行信息显示:
_index:索引名
_type:类型名
_id:文档id
完成了自动增加了索引!,数据也成功的添加了,这就是学习初期把它理解为数据库的原因。
elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据

  1. 点击数据浏览——》选择相应的索引
    elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据

四、指定字段的类型

类型分类 字段类型
字符串 text、keyword
数值 long、integer、short、byte、double、float、half、scaled、float
日期 date
布尔值 boolean
二进制 binary

下图是创建索引,定义数据的类型
mappings: 定义个类型
properties:自定属性

elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据
elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据

五、根据上面的规则,使用GET请求

elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据

六、查看默认的文档信息

  1. 类型(type)默认就是一个_doc
    elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据
    elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据
  2. 自己的文档字段没有指定,那么ES就会给我们默认配置字段类型
    例如下图中只是添加了数据,但是没有指定数据类型
    elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据

七、扩展:_cat

通过命令查看elasticsearch索引情况,通过get _cat可以获得ES当前很多信息
elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据

八、修改文档信息(put或者post) 提交还是PUT即可,然后覆盖

  1. 使用PUT进行修改
    put可以添加也可以进行修改,但是在修改的如果是部分修改,会将没有修改的值置空。同时修改的版本号也会改变由1变成了N.
    elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据

elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据

  1. POST修改
    格式:post /索引/文档/数据库/_update
    post修改可以实现部分修改

    elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据
    elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据

九、删除索引

delete 索引 //直接删除整个索引
delete /索引名称/类型名称/文档id 删除索引下的某一个文档

  1. 删除索引
    elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据
    elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据
  2. 添加一条文档,并删除它
    elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据

十、关于文档的基本操作(重点)

  1. 使用PUT增加数据
PUT /ceshi/user/1
{
  "name" : "款神说",
  "age": 23,
  "desc":"易擦偶偶你世纪东方流口水京东方",
  "tags":["技术宅","温暖", "直男"]
 
}
PUT /ceshi/user/2
{
  "name" : "张三",
  "age": 23,
  "desc":"法外",
  "tags":["游戏","交友"]
 
}

PUT /ceshi/user/3
{
  "name" : "历史",
  "age": 23,
  "desc":"爱笑",
  "tags":["机车","交友"]
 
}

elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据

  1. 获取索引库中的某一条文档数据
    elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据
  2. 更新数据 (不是完整的会将其它值置空)
PUT /ceshi/user/1
{
  "name": "王五"
}

elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据

  1. post方式修改(可以想改哪个改哪个)
POST /ceshi/user/1/_update
{
   "doc": {  //这块需要指定为doc
     "name" : "孙悟空"
   }
}
  1. 简单地搜索
    格式:get 索引/类型/文档?q=字段名:值…
    或者 post 索引/类型/文档?q=字段名:值…
POST /ceshi/user/_search?q=age:23
POST /ceshi/user/_search?q=name:张三
GET /ceshi/user/_search?q=name:张三

name类型是keyword,整体搜索
elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据

十一、复杂查询

复杂操作搜索select(排序、分页、高亮、模糊查询、精准查询)

  1. score 值越高匹配程度越大
    elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据
    elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据

  2. 模糊查询

  • 查询的参数体是JSON结构
GET /ceshi/user/_search 
{
  "query": {
    "match": {
      "name": "张三"
    }
  }
}
  • Hits对应Java中的hit对象
    hit中由索引和文档的信息、查询的结果总数、然后就是查询出来的具体的文档,数据中的东西都可以遍历出来。分数:可以判断更加符合预期的结果
    elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据

  • 筛选指定字段

GET /ceshi/user/_search 
{
  "query": {
    "match": {
      "name": "张三"
    }
  },
  "_source": ["name","age"]  //筛选指定字段
}
  1. 排序
GET /ceshi/user/_search 
{
  "query": {
    "match": {
      "name": "张三"
    }
  },
  "_source": ["name","age"],
  "sort": [
    {
      "_id": {   //filed修改为指定字段
        "order": "asc" //排序方式为desc或者asc
      }
    }
  ]
}
  1. 分页
    数据下标从0开始
GET /ceshi/user/_search
{
  "query": {
    "match": {
      "name": "张三"
    }
  }, 
  "_source": ["name", "age"]
  ,"sort": [
    {
      "_id": {
        "order": "desc"
      }
    }
  ]
  ,"from": 0  //分页从0开始
  ,"size": 2  //每页大小为2
}
  1. 布尔值查询
    must (and),所有的条件都要符合, where id =1 and name =XXX
    elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据
    6 should(or),所有的条件都要符合, where id =1 or name =XXX
    elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据
  2. must_not(not),所有的条件都要符合, where age != XXX
    elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据
  3. 过滤器(可以使用多个条件查询)
    filter 相当于 > < >= <=
    gt 表示大于
    lt 表示小于
    gte 表示大于等于
    lte 表示小于等于

elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据

  1. 匹配多个条件
    多个条件使用空格隔开就好,只要满足其中一个结过就可以被查出,这个时候可以通过分值进行基本判断
    elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据
  2. 精确查询
    term查询是直接通过倒排索引指定的词条进行精确查找的。
    关于分词:
  • term,直接查询精确的
  • match,会使用分词器解析!(先分析文档,然后再通过分析的文档进行查询)
  1. 两个类型keyword text
    keyword 全词匹配
    text 会进行拆分

elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据
elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据
elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据

中文使用ik分词器

elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据
term 解析
elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据

PUT testdb
{
  "mappings": {
    "properties": {
      "name": {
        "type": "text"
      },
      "desc": {
        "type": "keyword"
      }
    }
  }
}

PUT testdb/_doc/1
{
  "name":"狂神说Java name",
  "desc": "狂神说Java desc"
  
}

PUT testdb/_doc/2
{
  "name":"狂神说Java name",
  "desc": "狂神说Java desc2"
  
}

GET _analyze
{
  "analyzer": "keyword"
  ,"text":"狂神说Java name"
}

GET _analyze
{
  "analyzer": "standard",
  "text": "狂神说Java name"
}

GET testdb/_search
{
  "query": {
    "term": {
      "name": {
        "value": "狂"
      }
    }
  }
}

GET testdb/_search
{
  "query": {
    "term": {
      "desc" : {
        "value": "狂神说Java desc"
      }
    }
  }
}

GET testdb/_search
{
  "query": {
    "term": {
      "desc" :  "狂神说Java desc"
    }
  }
}

GET testdb/_search
{
  "query": {
    "match": {
      "name": "狂 "
    }
  }
}

GET testdb/_search
{
  "query": {
    "match": {
      "desc": "狂神说Java desc"
    }
  }
}

elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据

  1. 高亮查询
    搜索相关的结果可以高亮显示
    elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据

在自定义高亮标签
elasticsearch 添加数据,elasticsearch,elasticsearch,restful,大数据

总结

这些其实mysql也可以,但是比较慢文章来源地址https://www.toymoban.com/news/detail-780738.html

  • 匹配
  • 按条件匹配
  • 精确匹配
  • 区间范围匹配
  • 匹配字段过滤
  • 多条件查询
  • 高亮查询
  • 倒排索引

到了这里,关于Elasticsearch(四)——ES基本操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • elasticsearch 7.9.3知识归纳整理(二)之 es基本原理及使用kibana操作es的常见命令

    一、es的基本原理与基础概念 1.1 倒排索引 倒排索引 源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。带

    2024年02月12日
    浏览(35)
  • 原生语言操作和spring data中RestHighLevelClient操作Elasticsearch,索引,文档的基本操作,es的高级查询.查询结果处理. 数据聚合.相关性系数打分

    ​ Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasti

    2024年02月05日
    浏览(56)
  • Elasticsearch基本操作之文档操作

    本文来说下Elasticsearch基本操作之文档操作 文档概述 在创建好索引的基础上来创建文档,并添加数据。 这里的文档可以类比为关系型数据库中的表数据,添加的数据格式为 JSON 格式。 在 apifox 中,向 ES 服务器发 POST 请求 :http://localhost:9200/person/_doc,请求体内容为: 服务器响

    2024年02月01日
    浏览(29)
  • ElasticSearch - 基本操作

    本文记录 ES 的一些基本操作,就是对官方文档的一些整理,按自己的习惯重新排版,凑合着看。官方的更详细,建议看官方的。 下文以 books 为索引名举例。 添加单个文档 (没有索引会自动创建) 不指定 id,会随机生成,如果需要指定 id,使用 POST books/_doc/id 还可以使用 put 的

    2024年03月20日
    浏览(27)
  • ElasticSearch8 - 基本操作

    本文记录 ES 的一些基本操作,就是对官方文档的一些整理,按自己的习惯重新排版,凑合着看。官方的更详细,建议看官方的。 下文以 books 为索引名举例。 添加单个文档 (没有索引会自动创建) 不指定 id,会随机生成,如果需要指定 id,使用 POST books/_doc/id 还可以使用 put 的

    2024年04月09日
    浏览(26)
  • ElasticSearch基本api操作

    本文章下列所用es本意都为Elaticsearch Elaticsearch ,简称为es, es是一 个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好, 可以扩展到上百台服务器,处理PB级别(大数据时代)的数据。es也使用Java开发并使用Lucene作为其核心来实现所有索弓和搜

    2024年02月05日
    浏览(28)
  • Elasticsearch的基本操作与管理

    Elasticsearch是一个基于分布式搜索和分析引擎,由Netflix开发,后被Elasticsearch公司继承。它是一个实时、可扩展、高性能的搜索引擎,可以处理大量数据并提供快速、准确的搜索结果。Elasticsearch使用Lucene库作为底层搜索引擎,并提供RESTful API和JSON格式进行数据交互。 Elasticsea

    2024年02月20日
    浏览(22)
  • elasticsearch基本操作之--QueryBuilders

    使用QueryBuilders进行范围时间组合查询 es存储日志 是按照UTC时间格式存放,以@timestamp 作为时间范围查询条件,即from(Date1) to(Date2)Date1、Date2入参必须是标准的utc格式; 数字

    2024年02月13日
    浏览(34)
  • ElasticSearch Java API 基本操作

    ElasticSearch Java API是ES官方在8.x版本推出的新java api,也可以适用于7.17.x版本的es。 本文主要参考了相关博文,自己手动编写了下相关操作代码,包括更新mappings等操作的java代码。 代码示例已上传github。 elasticsearch 版本: 7.17.9 ,修改 /elasticsearch-7.17.9/config/elasticsearch.yml ,新增

    2024年02月08日
    浏览(32)
  • ElasticSearch 8.11 基本操作练习

    ES 8.0 默认把type给去掉了 新增/编辑 PUT /index/id  幂等操作 必须指定id 同一个id为修改 POST /index/id 非幂等操作 指定id时和put操作一样 不指定id 每次都会新增 id为系统随机分配 删除 DELETE /index  删除整个索引 DELETE /index/_doc/id  删除指定document  查询  GET /index/_search  不带条件查

    2024年02月04日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包