搜索引擎ES--索引、映射及文档操作

3 篇文章 0 订阅
订阅专栏

目录

索引操作

创建与删除索引库

        创建索引

        删除索引

判断索引是否存在

查看索引

        查看单个索引

        批量查看索引

        查看所有索引

打开与关闭索引

        打开索引

        关闭索引

映射操作

创建映射字段

映射属性详解

查看映射关系

        查看单个索引映射关系

        查看所有索引映射关系

修改索引映射关系

一次性创建索引与映射 

文档操作

新增文档

        新增文档(手动指定id)

        新增文档(自动生成id)

查看单个文档与所有文档

        单个文档

        所有文档

        文档元数据解读

_source(定制返回结果)

更新文档(局部更新与全局更新)

        全部更新

        局部更新

删除文档

        根据id进行删除

        根据查询条件进行删除

        删除所有文档

文档全量替换、强制创建

        全量替换

        强制创建


索引操作

创建与删除索引库

Elasticsearch采用Rest风格API,因此其API就是一次http请求,你可以用任何工具发起http请求

        创建索引

语法

PUT /索引名称
{
  "settings": {
    "属性名": "属性值"
  }
}

settings:就是索引库设置,其中可以定义索引库的各种属性 比如分片数 副本数等,目前我们可以不设置,都走默认

        删除索引

语法

DELETE /索引名称1,索引名称2,索引名称3...
 

查看索引,显示索引不存在

判断索引是否存在

语法

HEAD /索引名称

 

查看索引

        Get请求可以帮我们查看索引的相关属性信息,格式:

        查看单个索引

语法

GET /索引名称

        批量查看索引

语法

GET /索引名称1,索引名称2,索引名称3,...

        查看所有索引

方式一

GET _all

方式二

GET /_cat/indices?v

绿色:索引的所有分片都正常分配。
黄色:至少有一个副本没有得到正确的分配。
红色:至少有一个主分片没有得到正确的分配。

 

打开与关闭索引

        打开索引

语法

POST /索引名称/_open


        关闭索引

语法

POST /索引名称/_close

映射操作

创建映射字段

语法

PUT /索引库名/_mapping
{
  "properties": {
    "字段名": {
      "type": "类型",
      "index": true,
      "store": true,
      "analyzer": "分词器"
    }
  }
}

字段名:任意填写,下面指定许多属性,例如:
        type:类型,可以是text、long、short、date、integer、object等
        index:是否索引,默认为true
        store:是否存储,默认为false
        analyzer:指定分词器

更多属性:

        https://www.elastic.co/guide/en/elasticsearch/reference/7.3/mapping-params.html

示例

PUT /duia-company-index
PUT /duia-company-index/_mapping
{
  "properties": {
    "name": {
      "type": "text",
      "analyzer": "ik_max_word"
    },
    "job": {
      "type": "text",
      "analyzer": "ik_max_word"
    },
    "logo": {
      "type": "keyword",
      "index": "false"
    },
    "payment": {
      "type": "float"
    }
  }
}

映射属性详解

1) type

Elasticsearch中支持的数据类型非常丰富:

  • String类型,又分两种

       text:可分词,不可参与聚合

       keyword 不可分词,数据会作为完整字段进行匹配,可以参加聚合

  • Numerical

       基本数据类型:long、integer、short、byte、double、float、half_float

       浮点数的高精度类型:scaled_float 需指定一个精度因子,如10或100。es会把真实的值乘以        这个因子后存储,取出时再还原。

  • Date 日期类型

       elasticsearch可以对日期格式化为字符串存储,但是建议我们存储为毫秒值,存储为long,节        省空间。

  • Array

       进行匹配时,任意一个元素满足,都认为满足。

       排序时,如果升序则用数组中的最小值来排序,如果降序则用数组中的最大值来排序。

  • Object 对象
{
    name:"Jack",
    age:21,
    girl:{
        name: "Rose", age:21
    }
}

       如果存储到索引库的是对象类型,例如上面的girl,会把girl变成两个字段:girl.name和girl.age

2) index

       index影响字段的索引情况。

               true:字段会被索引,则可以用来进行搜索。默认值就是true

               false:字段不会被索引,不能用来搜索

       index的默认值就是true,也就是说你不进行任何配置,所有字段都会被索引。

       但是有些字段是我们不希望被索引的,比如企业的logo图片地址,需要手动设置index为false

3) store

       是否将数据进行独立存储。

        原始的文本会存储在 _source 里面,默认情况下其他提取出来的字段都不是独立存储的,是从_source 里面提取出来的。当然你也可以独立的存储某个字段,只要设置store:true即可,获取独立存储的字段要比从_source中解析快得多,但是也会占用更多的空间,所以要根据实际业务需求来设置,默认为false。

4) analyzer

        一般我们处理中文会选择ik分词器 ik_max_word ik_smart

 

查看映射关系

        查看单个索引映射关系

语法

GET /索引名称/_mapping

        查看所有索引映射关系

语法

GET _mapping 或 GET _all/_mapping

 

修改索引映射关系

语法

注意:修改映射增加字段 做其它更改只能删除索引 重新建立映射

PUT /索引库名/_mapping
{
  "properties": {
    "字段名": {
      "type": "类型",
      "index": true,
      "store": true,
      "analyzer": "分词器"
    }
  }
}

一次性创建索引与映射 

        我们可以在创建索引库的同时,直接制定索引库中的索引,基本语法:

put /索引库名称
{
  "settings": {
    "索引库属性名": "索引库属性值"
  },
  "mappings": {
    "properties": {
      "字段名": {
        "映射属性名": "映射属性值"
      }
    }
  }
}

       案例

PUT /lagou-employee-index
{
  "settings": {},
  "mappings": {
    "properties": {
      "name": {
        "type": "text",
        "analyzer": "ik_max_word"
      }
    }
  }
}

文档操作

新增文档

新增文档时,涉及到id的创建方式,手动指定或者自动生成。

        新增文档(手动指定id)

语法

POST /索引名称/_doc/{id}

POST /lagou-company-index/_doc/1
{
  "name": "百度",
  "job": "小度用户运营经理",
  "payment": "30000",
  "logo": "http://www.lgstatic.com/thubnail_120x120/i/image/M00/21/3E/CgpFT1kVdzeAJNbU AABJB7x9sm8374.png"
}

        新增文档(自动生成id)

语法

POST /索引名称/_doc

POST /lagou-company-index/_doc
{
  "field": "value"
}

 

查看单个文档与所有文档

        单个文档

语法

GET /索引名称/_doc/{id}

GET /lagou-company-index/_doc/{id}

        所有文档

语法 

POST /索引名称/_search
{
  "query": {
    "match_all": {}
  }
}

        文档元数据解读

元数据项
含义
_index
document 所属 index
_type
document 所属 type Elasticsearch7.x 默认 type _doc
_id
代表 document 的唯一标识,与 index type 一起,可以唯一标识和定位一个 document
_version
document 的版本号, Elasticsearch 利用 _version ( 版本号 ) 的方式来确保应用中相互冲突的变更不会导致数据丢失。需要修改数据时,需要指定想要修改文档的version 号,如果该版本不是当前版本号,请求将会失败
_seq_no
严格递增的顺序号,每个文档一个, Shard 级别严格递增,保证后写入的 Doc   seq_no 大于先写入的 Doc seq_no
_primary_term
任何类型的写操作,包括 index create update Delete ,都会生成一个 _seq_no。
found
true/false ,是否查找到文档
_source
存储原始文档

_source(定制返回结果)

某些业务场景下,我们不需要搜索引擎返回source中的所有字段,可以使用source进行定制,如下,多个字段之间使用逗号分隔

语法

GET /索引名称/_doc/{id}?_source=name1,name2,......

 

更新文档(局部更新与全局更新)

Elasticsearch可以使用PUT或者POST对文档进行更新(全部更新),如果指定ID的文档已经存在,则执行更新操作。

注意:Elasticsearch执行全部更新操作的时候,Elasticsearch首先将旧的文档标记为删除状态,然后添加新的文档,旧的文档不会立即消失,但是你也无法访问,Elasticsearch会在你继续添加更多数据的时候在后台清理已经标记为删除状态的文档。

全部更新,是直接把之前的老数据,标记为删除状态,然后,再添加一条更新的(使用PUT或者 POST)

局域更新,只是修改某个字段(使用POST)

        全部更新

将刚才新增的请求方式改为PUT,就是修改,不过修改必须指定id

  • id对应文档存在,则修改
  • id对应文档不存在,则新增

比如,我们把使用id为3,不存在,则是新增

可以看到是 created 新增。把数据改一下,再次执行刚才的请求

可以看到结果是: updated 更新数据

        局部更新

语法

POST /索引名/_update/{id}
{ 
  "doc":{ 
    "field":"value" 
  } 
}

删除文档

        根据id进行删除

语法

DELETE /索引名/_doc/{id} 

 

        根据查询条件进行删除

语法

POST /索引库名/_delete_by_query
{
  "query": {
    "match": {
      "字段名": "搜索关键字"
    }
  }
}

 

 

        删除所有文档

语法

POST 索引名/_delete_by_query
{
  "query": {
    "match_all": {}
  }
}

文档全量替换、强制创建

        全量替换

        语法与创建文档一样,如果文档id不存在,则创建;如果文档id已经存在,就是全量替换操作,替换文档的json串内容;

        文档是不可变的,如果要修改文档的内容,第一种方式就是全量替换,直接对文档重新建立
索引,替换里面所有的内容,elasticsearch会将老的文档标记为deleted,然后新增我们给定的一个文档,当我们创建越来越多的文档的时候,elasticsearch会在适当的时机在后台自动删除标记为deleted的文档 。

        强制创建

语法

PUT /lagou-company-index/_doc/4?op_type=create
{}

 

elasticsearch-mapper:用于ElasticSearch,JSON文档和MongoDB集合的自动映射生成器。
05-11
ElasticSearch入门非常容易,功能强大的全文本搜索引擎可以立即完成许多工作,其中包括动态映射。 是的,您不必告诉ElasticSearch您想要索引哪种数据,并且大多数时候它会适当地处理它。 但是在某些情况下,您需要...
es-cmd-helper:ElasticSearch 命令助手
06-16
本项目基于和 (ElasticSearch 对象搜索引擎映射)。文档访问 wiki 页面以访问文档。 安装不幸的是,此 API 在 Maven 中央存储库中尚不可用。 所以此时你必须手动安装它。 使用 GIT git clone ...
elasticsearch-x-content-6.3.0-API文档-中英对照版.zip
06-07
赠送jar包:elasticsearch-x-content-6.3.0.jar; 赠送原API文档:elasticsearch-x-content-6.3.0-javadoc.jar; 赠送源代码:elasticsearch-x-content-6.3.0-sources.jar; 赠送Maven依赖信息文件:elasticsearch-x-content-6.3.0.pom; 包含翻译后的API文档:elasticsearch-x-content-6.3.0-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.elasticsearch:elasticsearch-x-content:6.3.0; 标签:elasticsearch、x、content、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。
elasticsearch-rest-client-6.8.3-API文档-中文版.zip
07-13
赠送jar包:elasticsearch-rest-client-6.8.3.jar; 赠送原API文档:elasticsearch-rest-client-6.8.3-javadoc.jar; 赠送源代码:elasticsearch-rest-client-6.8.3-sources.jar; 赠送Maven依赖信息文件:elasticsearch-rest-client-6.8.3.pom; 包含翻译后的API文档:elasticsearch-rest-client-6.8.3-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.elasticsearch.client:elasticsearch-rest-client:6.8.3; 标签:elasticsearch、client、rest、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
linux-elasticsearch(基础)
郑俊强的博客
04-21 905
IK Analyzer 扩展配置linux-es.dic
ES的索引文档映射操作(二)
两个蝴蝶飞
04-06 807
1. 索引操作 2. 文档操作 3. 映射处理
ES基本操作(1):索引映射文档基本操作
weixin_43791996的博客
06-20 306
基本索引操作 新增索引 PUT person 删除索引 DELETE person 查询索引 GET person 关闭索引 POST person/_close 开启索引 POST person/_open 基本映射操作索引添加映射 PUT person/_mapping { "properties":{ "name":{ "type":"keyword" }, "age":{ "type":"integer" } } } 通
ElasticSearch 基础(五)之 映射
weixin_43844718的博客
03-07 2709
映射(Mapping)是定义文档及其包含的字段如何存储和索引的过程。每个文档都是字段的集合,每个字段都有自己的数据类型。映射数据时,创建映射定义,其中包含与文档相关的字段列表,决定字段使用什么分词器解析,是否有子字段等。映射定义还包括元数据字段,如_source字段,用于自定义如何处理文档的关联元数据。MySQLIndex(索引)Table(数据表)Dcoument(文档)Row(行)Fields(字段)Column(列)在 ES 7.0.0之前,映射定义包含一个类型名。
es修改mapping映射
weixin_53202407的博客
07-29 832
es修改mapping映射并进行数据迁移
ES-映射
蓝天⊙白云的博客
03-16 651
​ 1) Frozen indices(冻结索引):有些索引使用率很高,会被保存在内存中,有些使用率特别低,宁愿在使用的时候重新创建,在使用完毕后丢弃数据, Frozen indices的数据命中频率小,不适用于高搜索负载,数据不会被保存在内存中,堆空间占用比普通索引少得多,Frozen indices是只读的,请求可能 是秒级或者分钟级。​ ⑨ enable:是否创建倒排索引,可以对字段操作,也可以对索引操作,如果不创建索引,让然可以检索并在_source元数据中展示,谨慎使用,该状态无法 修改。
【Elasticsearch学习笔记二】es的Mapping字段映射、Mapping字段常用类型、Mapping映射的创建、查看和更新、es数据迁移、ik分词器
一个学习Java开发的老头
11-17 5959
映射(Mapping)相当于数据表的表结构。ElasticSearch中的映射(Mapping)用来定义一个文档,可以定义所包含的字段以及字段的类型、分词器及属性等等;动态映射(dynamic mapping):ElasticSearch中不需要事先定义映射(Mapping),文档写入ElasticSearch时,会根据文档字段自动识别类型。静态映射:在ElasticSearch中也可以事先定义好映射,包含文档的各个字段及其类型等,这种方式称之为静态映射
Elasticsearch(es)多种方式查询索引是否存在重复数据
weixin_38023814的博客
04-28 4702
Elasticsearch(es)多种方式判断索引里面是否存在重复数据
es(Elasticsearch) -- 映射参数解析
阿华田的博客
09-24 1284
1.analyzer 功能:给文本字段设置分词器。默认对索引和查询都是有效的 使用案例: PUT blog { "mappings": { "properties": { "title":{ "type":"text", "analyzer": "ik_smart" } } } } 2.search_analyzer 功能:设置查询时候的分词器。默认情况下,如果没有配置 search_analyzer,则查询时,
毕业设计-毕设项目:基于Scrapy+ElasticSearch+Django的小型全文搜索引擎
最新发布
06-09
基于Scrapy、ElasticSearch和...- **ElasticSearch索引设计**: - 定义文档结构,包括字段和类型。 - 设计索引文档映射。 - **Django后端设计**: - 设计URL路由和视图函数。 - 设计模型(尽管直接与ElasticSe
Tantivy 是受 Apache Lucene 启发并用 Rust 编写的全文搜索引擎
06-28
它更接近Apache Lucene,而不是Elasticsearch或Apache Solr ,因为它不是现成的搜索引擎服务器,而是可用于构建此类搜索引擎的 crate。事实上,Tantivy 的灵感来自于 Lucene 的设计。基准以下基准会分解不同类型的...
word源码java-ElasticSearch-Simple-Share:组内关于ElasticSearch的简单使用说明内容分享
06-05
Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 Elasticsearch 不仅仅是 Lucene,
Elasticsearch(四)--一文弄懂ES的映射操作
学习不止境的博客
01-18 3499
如商品是否售罄,房屋是否已租,酒店房间是否满房等。
Es之mapping
一个菜鸡的博客
01-03 3959
关系型数据库中两个数据表示是独立的,即使他们里面有相同名称的列也不影响使用, 但 ES 中不是这样的。elasticsearch 是基于 Lucene 开发的搜索引擎,而 ES 中不同 type下名称相同的 filed 最终在 Lucene 中的处理方式是一样的。
【ElasticSearch】es索引映射文档基本操作&复杂查询
扎哇太枣糕的笔记博客
03-09 2336
各位小伙伴们大家好,欢迎来到这个小扎扎的,本篇博客由B战尚硅谷的ElasticSearch视频总结而来,鉴于精神,这波依然是血赚┗|`O′|┛
elasticsearch-head-0.1.5-crx4chrome.com
09-07
elasticsearch-head-0.1.5-crx4chrome.com是一个用于管理Elasticsearch的Chrome浏览器扩展程序。Elasticsearch是一个开源的分布式搜索和分析引擎,而elasticsearch-head-0.1.5-crx4chrome.com提供了一个可视化界面,方便用户管理和监控其Elasticsearch集群。 这个扩展程序具有以下功能: 1. 集群状态监控:elasticsearch-head-0.1.5-crx4chrome.com可以显示集群的基本信息,如节点数量、索引数量和分片数量等。用户可以直观地了解集群的整体健康状态。 2. 索引管理:用户可以使用扩展程序来创建、删除和修改索引。同时,还可以通过页面来查看索引的详细信息,如字段映射、存储大小和文档数量等。 3. 查询和过滤:elasticsearch-head-0.1.5-crx4chrome.com支持用户执行各种不同类型的查询和过滤操作。用户可以输入自定义的查询语句并查看结果,还可以通过过滤器来限定查询的范围。 4. 文档操作:用户可以在扩展程序中执行文档的增删改查操作。通过elasticsearch-head-0.1.5-crx4chrome.com,用户可以方便地添加、删除和更新文档,并且可以直接在界面上查看和编辑文档的内容。 总的来说,elasticsearch-head-0.1.5-crx4chrome.com是一个功能强大且易于使用的Elasticsearch管理工具,它提供了可视化的界面和丰富的功能,帮助用户更轻松地管理和监控他们的Elasticsearch集群。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

分类专栏

  • Nacos
  • JVM 7篇
  • HBase 3篇
  • Linux 4篇
  • Redis 1篇
  • ElasticSearch 3篇
  • 数据结构及算法 17篇
  • RabbitMQ 5篇
  • 架构
  • 设计模式
  • SpringCloud 3篇
  • Mybatis学习 1篇
  • Java多线程 2篇
  • Zookeeper
  • Dubbo
  • 分布式架构学习
  • Spring学习
  • Springmvc及SpringData学习
  • SpringBoot学习 1篇
  • Tomcat及Nginx学习

最新评论

  • 数据结构与算法--图的广度优先搜索 (BFS)

    Nick__Liu: 写的很清楚

  • 数据结构与算法--图的深度优先搜索 (DFS)

    2728191526: while(!stack.isEmpty()) { //获取栈顶节点 int peek = stack.peek(); if(!isVisited[peek]) { System.out.print(graph.vertex.get(peek) + " "); stack.push(peek); isVisited[peek] = true; } //遍历该节点所有的邻接节点 for(int w = graph.getFirstNeighbor(peek); w != -1; w = graph.getNextNeighbor(peek, w)) { flag = false; if(!isVisited[w]) //获取一个未访问过的邻接节点则退出循环 { System.out.print(graph.vertex.get(w) + " "); stack.push(w); isVisited[w] = true; flag = true; break; } } //若某个的所有邻接节点已被访问,则将该节点出栈 if(!flag) stack.pop(); }

  • 数据结构与算法--图的深度优先搜索 (DFS)

    2728191526: 有大佬写出来了吗 参考参考

  • 数据结构与算法--图的深度优先搜索 (DFS)

    zlsixsixsix: 写得好表情包表情包

  • Mybatis问题:pageHelper与Collection导致的分页数据展示不一致问题

    qq_35874517: 可以 用分组查询就可以进行条件查询

最新文章

  • Arthas使用
  • JVM - 垃圾回收器
  • JVM-垃圾收集算法
2023年1篇
2022年40篇
2021年13篇
2020年14篇
2019年15篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司枣庄SEO按天计费公司坪山网站优化推广多少钱鹰潭建网站报价聊城百姓网标王推广推荐德州营销型网站建设松岗网站改版价格芜湖网站优化按天收费多少钱双龙外贸网站设计公司济宁网站关键词优化公司龙华企业网站设计多少钱十堰关键词按天收费推荐岳阳关键词按天扣费平顶山百度爱采购南通网站改版西乡网站优化排名报价忻州seo优化报价山南优化普洱优化价格菏泽网站建设设计信阳网站建设推荐莆田关键词按天收费价格平湖SEO按天扣费公司东莞网站推广报价宁波网站推广系统临猗百度爱采购公司长沙网站排名优化价格鸡西网站改版推荐锦州网站建设酒泉建设网站价格杭州企业网站制作价格歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化