你还不会ES的CUD吗?

2023-10-15 03:30
文章标签 es 不会 cud

本文主要是介绍你还不会ES的CUD吗?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

近端时间在搬砖过程中对es进行了操作,但是对es查询文档不熟悉,所以这两周都在研究es,简略看了《Elasticsearch权威指南》,摸摸鱼又是一天。

es是一款基于Lucene的实时分布式搜索和分析引擎,今天咱不聊其应用场景,聊一下es索引增删改。

环境:Centos 7,Elasticsearch6.8.3,jdk8

(最新的es是7版本,7版本需要jdk11以上,所以装了es6.8.3版本。)

下面都将以student索引为例

一、创建索引

PUT   http://192.168.197.100:9200/student
{"mapping":{"_doc":{ //“_doc”是类型type,es6中一个索引下只有一个type,不能有其它type"properties":{"id": {"type": "keyword"},"name":{"type":"text","index":"analyzed","analyzer":"standard"},"age":{"type":"integer","fields": {"keyword": {"type": "keyword","ignore_above":256}}},"birthday":{"type":"date"},"gender":{"type":"keyword"},"grade":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}},"class":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}}}}},"settings":{//主分片数量"number_of_shards" : 1, //分片副本数量"number_of_replicas" : 1}
}

type属性是text和keyword的区别:

(1)text在查询的时候会被分词,用于搜索

(2)keyword在查询的时候不会被分词,用于聚合

index属性是表示字符串以何种方式被索引,有三种值

(1)analyzed:字段可以被模糊匹配,类似于sql中的like

(2)not_analyzed:字段只能精确匹配,类似于sql中的“=”

(3)no:字段不提供搜索

analyzer属性是设置分词器,中文的话一般是ik分词器,也可以自定义分词器。

number_of_shards属性是主分片数量,默认是5,创建之后不能修改

number_of_replicas属性时分片副本数量,默认是1,可以修改

创建成功之后会返回如下json字符串

{    "acknowledged": true,    "shards_acknowledged": true,    "index": "student"}

创建之后如何查看索引的详细信息呢?

GET http://192.168.197.100:9200/student/_mapping

es6版本,索引之下只能有一个类型,例如上文中的“_doc”。

es跟关系型数据库比较:

 

二、修改索引

//修改分片副本数量为2
PUT http://192.168.197.100:9200/student/_settings
{"number_of_replicas":2
}

三、删除索引

//删除单个索引 
DELETE http://192.168.197.100:9200/student//删除所有索引
DELETE  http://192.168.197.100:9200/_all

四、默认分词器standard和ik分词器比较

es默认的分词器是standard,它对英文的分词是以空格分割的,中文则是将一个词分成一个一个的文字,所以其不适合作为中文分词器。

例如:standard对英文的分词

//此api是查看文本分词情况的 
POST http://192.168.197.100:9200/_analyze
{"text":"the People's Republic of China","analyzer":"standard"
}

结果如下:

{"tokens": [{"token": "the","start_offset": 0,"end_offset": 3,"type": "<ALPHANUM>","position": 0},{"token": "people's","start_offset": 4,"end_offset": 12,"type": "<ALPHANUM>","position": 1},{"token": "republic","start_offset": 13,"end_offset": 21,"type": "<ALPHANUM>","position": 2},{"token": "of","start_offset": 22,"end_offset": 24,"type": "<ALPHANUM>","position": 3},{"token": "china","start_offset": 25,"end_offset": 30,"type": "<ALPHANUM>","position": 4}]
}

对中文的分词:

POST http://192.168.197.100:9200/_analyze
{"text":"中华人民共和国万岁","analyzer":"standard"
}

结果如下:


{"tokens": [{"token": "中","start_offset": 0,"end_offset": 1,"type": "<IDEOGRAPHIC>","position": 0},{"token": "华","start_offset": 1,"end_offset": 2,"type": "<IDEOGRAPHIC>","position": 1},{"token": "人","start_offset": 2,"end_offset": 3,"type": "<IDEOGRAPHIC>","position": 2},{"token": "民","start_offset": 3,"end_offset": 4,"type": "<IDEOGRAPHIC>","position": 3},{"token": "共","start_offset": 4,"end_offset": 5,"type": "<IDEOGRAPHIC>","position": 4},{"token": "和","start_offset": 5,"end_offset": 6,"type": "<IDEOGRAPHIC>","position": 5},{"token": "国","start_offset": 6,"end_offset": 7,"type": "<IDEOGRAPHIC>","position": 6},{"token": "万","start_offset": 7,"end_offset": 8,"type": "<IDEOGRAPHIC>","position": 7},{"token": "岁","start_offset": 8,"end_offset": 9,"type": "<IDEOGRAPHIC>","position": 8}]
}

ik分词器是支持对中文进行词语分割的,其有两个分词器,分别是ik_smart和ik_max_word。

(1)ik_smart:对中文进行最大粒度的划分,简略划分

例如:

POST http://192.168.197.100:9200/_analyze
{"text":"中华人民共和国万岁","analyzer":"ik_smart"
}

结果如下:

{"tokens": [{"token": "中华人民共和国","start_offset": 0,"end_offset": 7,"type": "CN_WORD","position": 0},{"token": "万岁","start_offset": 7,"end_offset": 9,"type": "CN_WORD","position": 1}]
}

(2)ik_max_word:对中文进行最小粒度的划分,将文本划分尽量多的词语

例如:

POST http://192.168.197.100:9200/_analyze
{"text":"中华人民共和国万岁","analyzer":"ik_max_word"
}

结果如下:

{"tokens": [{"token": "中华人民共和国","start_offset": 0,"end_offset": 7,"type": "CN_WORD","position": 0},{"token": "中华人民","start_offset": 0,"end_offset": 4,"type": "CN_WORD","position": 1},{"token": "中华","start_offset": 0,"end_offset": 2,"type": "CN_WORD","position": 2},{"token": "华人","start_offset": 1,"end_offset": 3,"type": "CN_WORD","position": 3},{"token": "人民共和国","start_offset": 2,"end_offset": 7,"type": "CN_WORD","position": 4},{"token": "人民","start_offset": 2,"end_offset": 4,"type": "CN_WORD","position": 5},{"token": "共和国","start_offset": 4,"end_offset": 7,"type": "CN_WORD","position": 6},{"token": "共和","start_offset": 4,"end_offset": 6,"type": "CN_WORD","position": 7},{"token": "国","start_offset": 6,"end_offset": 7,"type": "CN_CHAR","position": 8},{"token": "万岁","start_offset": 7,"end_offset": 9,"type": "CN_WORD","position": 9},{"token": "万","start_offset": 7,"end_offset": 8,"type": "TYPE_CNUM","position": 10},{"token": "岁","start_offset": 8,"end_offset": 9,"type": "COUNT","position": 11}]
}

ik分词器对英文的分词:


POST http://192.168.197.100:9200/_analyze
{"text":"the People's Republic of China","analyzer":"ik_smart"
}

结果如下:会将不重要的词去掉,但standard分词器会保留(英语水平已经退化到a an the都不知道是属于什么类型的词了,身为中国人,这个不能骄傲)

{"tokens": [{"token": "people","start_offset": 4,"end_offset": 10,"type": "ENGLISH","position": 0},{"token": "s","start_offset": 11,"end_offset": 12,"type": "ENGLISH","position": 1},{"token": "republic","start_offset": 13,"end_offset": 21,"type": "ENGLISH","position": 2},{"token": "china","start_offset": 25,"end_offset": 30,"type": "ENGLISH","position": 3}]
}

五、添加文档

可以任意添加字段


//1是“_id”的值,唯一的,也可以随机生成
POST http://192.168.197.100:9200/student/_doc/1
{"id":1,"name":"tom","age":20,"gender":"male","grade":"7","class":"1"
}

六、更新文档

POST http://192.168.197.100:9200/student/_doc/1/_update
{"doc":{"name":"jack"}
}

七、删除文档

//1是“_id”的值 
DELETE http://192.168.197.100:9200/student/_doc/1

上述就是简略的对es进行索引创建,修改,删除,文档添加,删除,修改等操作,为避免篇幅太长,文档查询操作将在下篇进行更新。

这篇关于你还不会ES的CUD吗?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/215052

相关文章

如何保证android程序进程不到万不得已的情况下,不会被结束

最近,做一个调用系统自带相机的那么一个功能,遇到的坑,在此记录一下。 设备:红米note4 问题起因 因为自定义的相机,很难满足客户的所有需要,比如:自拍杆的支持,优化方面等等。这些方面自定义的相机都不比系统自带的好,因为有些系统都是商家定制的,难免会出现一个奇葩的问题。比如:你在这款手机上运行,无任何问题,然而你换一款手机后,问题就出现了。 比如:小米的红米系列,你启用系统自带拍照功能后

ElasticSearch的DSL查询⑤(ES数据聚合、DSL语法数据聚合、RestClient数据聚合)

目录 一、数据聚合 1.1 DSL实现聚合 1.1.1 Bucket聚合  1.1.2 带条件聚合 1.1.3 Metric聚合 1.1.4 总结 2.1 RestClient实现聚合 2.1.1 Bucket聚合 2.1.2 带条件聚合 2.2.3 Metric聚合 一、数据聚合 聚合(aggregations)可以让我们极其方便的实现对数据的统计、分析、运算。例如:

OpenGL ES学习总结:基础知识简介

什么是OpenGL ES? OpenGL ES (为OpenGL for Embedded System的缩写) 为适用于嵌入式系统的一个免费二维和三维图形库。 为桌面版本OpenGL 的一个子集。 OpenGL ES管道(Pipeline) OpenGL ES 1.x 的工序是固定的,称为Fix-Function Pipeline,可以想象一个带有很多控制开关的机器,尽管加工

OpenGL ES 2.0渲染管线

http://codingnow.cn/opengles/1504.html Opengl es 2.0实现了可编程的图形管线,比起1.x的固定管线要复杂和灵活很多,由两部分规范组成:Opengl es 2.0 API规范和Opengl es着色语言规范。下图是Opengl es 2.0渲染管线,阴影部分是opengl es 2.0的可编程阶段。   1. 顶点着色器(Vert

看完这个不会配置 logback ,请你吃瓜!

之前在 日志?聊一聊slf4j吧 这篇文章中聊了下slf4j。本文也从实际的例子出发,针对logback的日志配置进行学习。 logack 简介 logback 官网:https://logback.qos.ch/ 目前还没有看过日志类框架的源码,仅限于如何使用。所以就不说那些“空话”了。最直观的认知是: logback和log4j是一个人写的springboot默认使用的日志框架是

在项目开发中,jsp页面不会少了,如何公用页面(添加页面和修改页面)和公用样式代码(css,js)?

在项目开发中,如何公用添加页面和修改页面? <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><html><head><title>岗位设置</title><%@ include file="/WEB-INF/jsp/public/common.jspf"%></head><body> <!-- 标

涉密电脑插U盘会不会被发现?如何禁止涉密电脑插U盘?30秒读懂!

在涉密电脑插U盘的那一瞬间,你是否也好奇会不会被发现?涉密电脑的安全监控可是滴水不漏的!想知道如何彻底禁止涉密电脑插U盘?简单几招搞定,轻松锁死外部设备,信息安全无懈可击! 涉密电脑插U盘会不会被发现? 涉密电脑是否会在插入U盘时被发现,需要根据具体情况来判断。在一些情况下,涉密电脑可能没有安装任何监控软件或安全工具,插入U盘可能不会立即触发警告。然而,随着信息安全管理的不断升级,越来越多

是谁还不会flink的checkpoint呀~

1、State Vs Checkpoint State:状态,是Flink中某一个Operator在某一个时刻的状态,如maxBy/sum,注意State存的是历史数据/状态,存在内存中。 Checkpoint:快照点, 是Flink中所有有状态的Operator在某一个时刻的State快照信息/存档信息 一句话概括: Checkpoint就是State的快照 目的:假设作业停止了,下次启动的

Elastic Stack--ES集群加密及Kibana的RBAC实战

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 学习B站博主教程笔记:  最新版适合自学的ElasticStack全套视频(Elk零基础入门到精通教程)Linux运维必备—ElasticSearch+Logstash+Kibana精讲_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1VMW3e6Ezk/?sp

期货赫兹量化-种群优化算法:进化策略,(μ,λ)-ES 和 (μ+λ)-ES

进化策略(Evolution Strategies, ES)是一种启发式算法,旨在模仿自然选择的过程来解决复杂的优化问题,尤其在没有显式解、或搜索空间巨大的情况下表现良好。基于自然界的进化原理,进化策略通过突变、选择等遗传算子迭代生成解,并最终寻求全局最优解。 进化策略通常基于两个核心机制:突变和选择。突变是对当前解进行随机扰动,而选择则用于保留适应度更高的个体。本文详细介绍了 (μ,λ)-ES