技术标签: restful elasticsearch 搜索引擎
Elasticsearch (ES)是一个基于Lucene构建的开源、分布式、RESTful 接口全文搜索引擎。Elasticsearch 还是一个分布式文档数据库,其中每个字段均是被索引的数据且可被搜索,它能够扩展至数以百计的服务器存储以及处理PB级的数据。它可以在很短的时间内在储、搜索和分析大量的数据。它通常作为具有复杂搜索场景情况下的核心发动机。
Elasticsearch就是为高可用和可扩展而生的。可以通过购置性能更强的服务器来完成。
在本专栏的前几篇文章中我们介绍过ES 6.X 版本的介绍,包括ELK的搭建,感兴趣的小伙伴也可以看下本专栏的其他文章,本篇内容我们讲解下ES 7.X 版本的使用,该篇文章主要基于RESTful 的方式调用ES所提供的API。
截止到目前,ES的版本已到 7.16.2
在开始前可以去官方地址中下载一个ES7.X版本的安装包,下面是下载地址:
https://www.elastic.co/cn/downloads/past-releases#elasticsearch
从上面的图片可以看出,现在版本已经到了7.16.2,但我们不适用那么新的,这里我选择了个比较适中的版本 7.14.0,太新的不一定就是最好的。
这里我们先使用下window版本进行测试,下篇文章我们讲解ES集群的搭建。下载完成后,解压进入bin下,双击elasticsearch.bat
即可启动ES。
本篇测试基于PostMan发送Rest Http请求的。
在7.XEs的type已逐渐被淘汰,可以把索引理解为传统数据库的表。
向 ES 服务器发 PUT 请求:
http://127.0.0.1:9200/user
如果重复添加索引,会提示错误。
向 ES 服务器发 GET 请求 :
http://127.0.0.1:9200/_cat/indices?v
已经查出刚才添加的索引。
向 ES 服务器发 GET 请求 :
http://127.0.0.1:9200/user
已经查出,可以看到更详细的信息了,比如上面的分片数和副本数,ES创建索引时不指定分片和副本默认都是1
向 ES 服务器发 DELETE 请求 :
http://127.0.0.1:9200/user
再次查询就已经不存在了。
文档可以理解为关系型数据库中的表数据,但ES中的数据格式为 JSON 格式。这里先把上面删除的索引user 创建好,下面就在user索引中进行演示:
向 ES 服务器发 POST 请求 :
http://127.0.0.1:9200/user/_doc
请求体内容为:
{
"name":"张三",
"age":18,
"sex":"男"
}
由于没有指定数据唯一性标识(ID),默认情况下,ES 服务器会随机生成一个。
向 ES 服务器发 POST 请求 :
http://127.0.0.1:9200/user/_doc/001
请求体内容为:
{
"name":"张三",
"age":18,
"sex":"男"
}
已经是自定义的ID了。
查看文档时,需要指明文档的唯一性标识,类似于 MySQL 中数据的主键查询。
向 ES 服务器发 GET 请求 :
http://127.0.0.1:9200/user/_doc/001
和新增文档一样,输入相同的 URL 地址请求,如果请求体变化,会将原有的数据内容覆盖。
向 ES 服务器发 POST 请求 :
http://127.0.0.1:9200/user/_doc/001
请求体内容为:
{
"name":"李四",
"age":20,
"sex":"男"
}
再次查询,可以看到已经修改。
上面是一次修改整个文档,在修改数据时,也可以只修改某一给条数据的局部信息。
向 ES 服务器发 POST 请求 :
http://127.0.0.1:9200/user/_update/001
请求体内容为:
{
"doc": {
"name":"王五"
}
}
再次查询,已经修改。
删除一个文档不会立即从磁盘上移除,它只是被标记成已删除(逻辑删除)。
向 ES 服务器发 DELETE 请求 :
http://127.0.0.1:9200/user/_doc/001
可以根据条件对多条数据进行删除。
向 ES 服务器发 POST 请求 :
http://127.0.0.1:9200/user/_delete_by_query
请求体内容为:
{
"query":{
"match":{
"name":"张三"
}
}
}
显示了删除的条数。
映射操作,类似于数据库(database)中的表结构(table)。创建数据库表需要设置字段名称,类型,长度,约束等;索引库也一样,需要知道这个类型下有哪些字段,每个字段有哪些约束信息,这就叫做映射(mapping)。
创建映射前需要创建一个新的索引,下面创建user2
索引:
向 ES 服务器发 PUT 请求:
http://127.0.0.1:9200/user2
下面再来创建映射,向 ES 服务器发 PUT 请求 :
http://127.0.0.1:9200/user2/_mapping
请求体内容为:
{
"properties": {
"name":{
"type": "text",
"index": true
},
"sex":{
"type": "keyword",
"index": true
},
"age":{
"type": "long",
"index": false
}
}
}
type
表示在ES中的数据类型,其中有:
String 类型,又分两种:
text:可分词
keyword:不可分词,数据会作为完整字段进行匹配
Numerical:数值类型,分两类
基本数据类型:long、integer、short、byte、double、float、half_float
浮点数的高精度类型:scaled_float
Date:日期类型
Array:数组类型
Object:对象
index
表示是否索引,默认为 true,也就是说你不进行任何配置,所有字段都会被索引。true:字段会被索引,则可以用来进行搜索,false:字段不会被索引,不能用来搜索
store
表示是否将数据进行独立存储,默认为 false,原始的文本会存储在_source 里面,默认情况下其他提取出来的字段都不是独立存储的,是从_source 里面提取出来的。当然你也可以独立的存储某个字段,只要设置"store": true 即可,获取独立存储的字段要比从_source 中解析快得多,但是也会占用更多的空间,所以要根据实际业务需求来设置。
analyzer
表示分词器,比如 ik 分词器。
向 ES 服务器发 GET 请求 :
http://127.0.0.1:9200/user2/_mapping
在创建索引时,就指定映射关联。
向 ES 服务器发 PUT 请求 :
http://127.0.0.1:9200/user3
请求体内容为:
{
"settings": {},
"mappings": {
"properties": {
"name": {
"type": "text",
"index": true,
"analyzer": "pinyin"
},
"sex": {
"type": "text",
"index": true,
"analyzer": "ik_smart"
},
"age": {
"type": "long",
"index": false
}
}
}
}
向 ES 服务器发 PUT 请求 :
http://127.0.0.1:9200/user3/_mapping
{
"properties": {
"item": {
"type": "nested",
"properties": {
"value": {
"type": "long"
}
}
}
}
}
OOP ----------> 面向对象编程
1006. 换个格式输出整数 (15)时间限制400 ms内存限制65536 kB代码长度限制8000 B判题程序Standard作者CHEN, Yue让我们用字母B来表示“百”、字母S表示“十”,用“12...n”来表示个位数字n(输入格式:_pat 乙级1005 java
黄岚java程序设计习题答案更多相关问题[名词解释] T型梁桥[填空题] 光栅读数头是由()组成。[名词解释] 主梁[单选] 检测元件在数控机床中的作用是检测移位和速度,发送()信号,构成闭环控制。[名词解释] 主梁[问答题] 对于城市桥梁桥面的排水设施处理时,应注意的问题有哪些?[单选] 闭环控制方式的移位测量元件应采用()。[名词解释] 施工便桥[名词解释] 空心板[名词解释] T形钢构桥[名..._java程序设计黄岚王岩书习题答案
我修改了一下配置文件,ganglia忽然就说打不开PID,这让我真的是莫名其妙。于是我检查了pid的文件目录,发现所有文件都在这个pid应该属于启动gmeta这个服务启动后及自动进行创建的,因为我之前认为时权限问题,特意改了gmetad.pid的权限,这样之后重启服务,确实权限没有了gmeta.pid的文件可以查看里面的id在这里我基本可以确定确实那里权限出问题了,所以再考虑gmetad启动时,在哪里设置服务当我快放弃的时候终于找到解决办法了,真是要炸了。这是我找打的gmetad.p_pas-node.service: can't open pid file /opt/idc/apps/pas-node/node-agent/star
数据库备份是很重要的。如果定期做好备份,这样就可以在发生系统崩溃时恢复数据到最后一次正常的状态,把损失减小到最少。MySQLl提供了一个mysqldump命令,我们可以用它进行数据备份,下面假设要备份tm这个数据库: #mysqldump -u root -p tm > tm_050519.sql 按提示输入密码,这就把tm数据库所有的表结构和数据备份到tm_050519.sq..._linux连接别的mysql后备份
查看大图:http://img.blog.csdn.net/20170926152616874?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRmFlcmlleXc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center_onmousedown切出
3.1实验目的1.掌握网络设备、终端端口IP地址配置2.掌握网关的基本概念3.掌握RIP路由选择协议配置4.掌握网络配置拍错基本方法3.2基本概念1.网关网关实质上是一个网络通向其他网络的出口(该出口的IP地址)。类似于人类必须经过大楼出口。路由器的RA的接口f0/0为网络A的网关,路由器RB的接口f0/0为网络的网关。2.SVI三层交换机中不同VLAN之间相互通信,必须经过网关,如果没有路由器,可以用SVI作为VLAN的网关。VLAN虚拟接口配置了IP地址后,该接口即可以作为本VLA_配rip时命令写的是网络地址还是
文章很长,建议收藏起来,慢慢读! Java 高并发 发烧友社群:疯狂创客圈 奉上以下珍贵的学习资源: 免费赠送 经典图书:《Java高并发核心编程(卷1)》 面试必备 + 大厂必备 +涨薪必备 加尼恩免费领 免费赠送 经典图书:《Java高并发核心编程(卷2)》 面试必备 + 大厂必备 +涨薪必备 加尼恩免费领 免费赠送 经典图书:《Netty Zookeeper Redis 高并发实战》 面试必备 + 大厂必备 +涨薪必备 加尼恩免费领 免费赠送 经典图书:《SpringCloud _controlle结构
系统性能相关的MySQL变量原文摘录自:http://forge.mysql.com/wiki/ServerVariablesMemory-Related Variables内存相关变量These server variables control the amount of memory allocated to the various buffers and caches within MySQ...
/*查询索引占表空间的大小*/select (sum(bytes)/1024/1024)||'MB' from dba_segments where segment_name = 'PK_CS_REC_RECEPTION';/*查询表占表空间的大小*/ select (sum(bytes)/1024/1024)||'MB' from user_extents t where segment_name=upper('reception_select sum(bytes)/1024 as data_size from user_segments where segment_name=
gitrob在安装gitrob过程中进行到gem install gitrob这一步时出现如下问题:解决方法:apt-get install zlib1g-dev安装smbexec过程中遇到若干问题最终按照这篇文章的流程完成安装。安装Windows虚拟机配置Hyperion时遇到如下错误:解决方法就是打开makefile文件然后在CFLAGS 最后面添加:-std=gnu+..._smbexec安装不成功
本人正在学习socket网络编程,同时又在看多线程的编程,所以就pgn