ElasticSearch简介和linux下安装配置环境+对数据增删改查

一:ElasticSearch简介

ElasticSearch:(solr与Lucene与其类似)
  • 是一个基于Lucene的搜索服务器(ES)—数据库
  • 专门为分布式环境设计
  • 封装了luence的检索细节,只是走restfulapi。
  • 近乎实时的存储、检索数据;本身扩展性很好
  • 通过简单的RESTful API来隐藏Lucene的复杂性
  • 文件内容搜索的数据库----反向检索

二:ElasticSearch优缺点:

优点:

数据量较大的时候可以进行快速搜索,并且本身还带有分词器,可以对elasticSearch内的数据进行分词搜索。有利于数据管理

缺点:

1.在需要添加新数据与新字段的时候,如果elasticSearch进行搜索是可能需要重新修改格式。之前的数据需要重新同步,对数据的管理有很多困难。
2.许多mysql可以搜索到的东西,在elasticSearch里就不能搜或很难搜

三:ElasticSearch用法

分片:索引指向一个或多个分片得逻辑命名空间,即一篇文章拆成多份

主分片:默认分5片,索引首先被存储在主分片中,并复制相应得副本分片

副本分片:一旦主分片失效,副分片晋升为主分片

主节点:负责创建索引,删除,分配分片数,追踪节点状态

节点:一个集群由多个节点组成,一个节点是es实例,默认每个节点都为候选主节点与数据节点

倒排索引:根据关键字倒过来找文章

ElasticSearchCRUD:

创建index(库):

# 通过hash映射来确定副本得存储位置
# 通过路由计算hash(routing) % number_of_primary_shards(分片)来得到存储得位置
# 建索引
PUT demo.1234
{
	"settings" :{
		"index" :{
			"number_of_shards" : 2, # 主分片数量 默认为5
			"number_of_replicas" : 2 # 副本数量,默认为1为不设
		}
	}
}

创建Type(表):

postman上输入对应传送方式,URL

在body请求的raw处传送json格式:

在这里插入图片描述

在raw中输入json格式命令:

{
	"settings" : {
		# 加了index索引之后会硬盘
		# "index" : {}一般不加
		"number_of_shards" : 3, 
		"number_of_replicas" : 1
	},
	"mappings" : {
		# 建type 表
		"userinfos" : {
			# 建 document 行
			"properties" : {
				# 建 field 列
				"userid" : { "type" : "integer" },
				"username" : { "type" : "keyword" },
				"birthday" : {
					"type" : "date",
					"format" : "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
				},
				"say" : { "type" : "text" }
			}
		}
	}	
}

Create:插入field信息

postman上输入对应传送方式,URL

在body请求的raw处传送json格式:
在这里插入图片描述

在raw中输入json格式命令:

{
	"settings" : {
		"number_of_shards" : 3, # 主分片为3
		"number_of_replicas" : 1 # 副本不设
	},
	"mappings" : {
		"userinfos" : {
			"properties" : {
				"userid" : { "type" : "integer" },
				"username" : { "type" : "keyword" },
				"birthday" : {
					"type" : "date",
					"format" : "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
				},
				"say" : { "type" : "text" }
			}
		}
	}	
}

Update:更新field信息

postman上输入对应传送方式,URL中输入修改id和表和update命令
在这里插入图片描述

在body请求的raw处传送json格式:

在这里插入图片描述

在raw中输入json格式命令:

{
	"doc" : {
		"username" : "lisi"
	}
}

Delete:删除field信息

postman上输入对应传送方式,URL中输入修改id和表
在这里插入图片描述

然后直接send即可删除

将文章关键词分

Read:查找

  • match_phrase:短语查询不能分割,需要连着查

  • match_all:查所有

  • match_phrase_prefix:短语前缀查询,前面都和match_phrase一样,最后一个分词作为前缀匹配

  • match: 布尔匹配查询:只要查到分词当中其中任意一个,就可以查到

  • multi_match:多字段匹配查询

{
    "query": {
    	# 查询两个字段中是否都有该值的document
        "multi_match": {
          "query": "John like cooking",
          "fields": ["name","interest"]
        }
    }
}

四:linux下的ElasticSearch安装及环境配置

第一步:首先我们需要安装3台虚拟机,以此模拟集群环境。
第二步:在3台虚拟机下都配置好jdk环境,jdk的安装和shell脚本安装我以前的文章有写过。
再次提供传送门—
https://blog.csdn.net/qq_35050438/article/details/106081902
https://blog.csdn.net/qq_35050438/article/details/106199592
第三步:我们下载好ElasticSearch6.2.2tar包后,将其放在/opt下解压后,将其在放在/soft/elasticsearch622/目录下

tar -zxvf elasticsearch6.2.2.tar.gz
mv elasticsearch6.2.2 /soft/elasticsearch622

第四步:修改配置文件config下的elasticsearch.yml文件

vi /opt/soft/elasticsearch622/config/elasticsearch.yml
  • 集群名称
cluster.name: es-app #集群名称,可以自行修改

在这里插入图片描述

  • 本机作为节点的名字
node.name: es-1 #节点名称,自行修改

在这里插入图片描述

  • 主机地址和端口号
network.host: 192.168.235.133 #主机地址,这里写本机IP
http.port: 9200 #端口

在这里插入图片描述

  1. 跨域访问设置
http.cors.enabled: true #设置跨域
http.cors.allow-origin: "*" #设置访问

在这里插入图片描述
第五步:添加linux用户,并设置密码

useradd nicedays
passwd nicedays
# 然后设置新密码

第六步:此时就可以去启动elasticsearch了,但是往往会出错,第五步总结一下几处出错:

1. 系统最大文件数太低

[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
  • 解决办法:修改 vi /etc/security/limits.conf 文件末尾追加
用户名 soft nofile 65536
用户名 hard nofile 131072
用户名 soft nproc 4096
用户名 hard nproc 4096

在这里插入图片描述
2. 虚拟内存太低

[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
  • 解决办法:修改vi /etc/sysctl.conf文件末尾追加
vm.max_map_count=655360

保存退出后输入命令更新文件

sysctl -p

3.用户访问权限不够

java.nio.file.AccessDeniedException: …/elasticsearch-6.2.2/config/jvm.options
  • 解决办法:因为我们是用普通用户登的,而elasticsearch是由root解压移动的,需要root将权限转给我们普通用户
chown 用户名 elasticsearch-6.2.2安装目录路径 -R

第七步:登录普通用户并定位到bin目录,运行elasticsearch

sudo 用户名
cd /opt/soft/elasticsearch622/bin
./elasticsearch

在这里插入图片描述
看到上图代表登陆成功,成功我们可以去浏览器输入虚拟机的ip:端口号,以此来访问

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值