elastic search入门

参考1:Elastic Search 入门 - 知乎

参考2:Ubuntu上安装ElasticSearch_ubuntu elasticsearch-CSDN博客

1、ElasticSearch安装

1.1安装JDK,省略,之前已安装过

1.2创建ES用户

创建用户:sudo useradd esuser
设置密码:sudo passwd esuser

1.3 下载ElasticSearch安装包

Ubuntu上下载:

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.11.1-linux-x86_64.tar.gz

然后解压:

tar -xvzf elasticsearch-7.11.1-linux-x86_64.tar.gz

1.4配置

配置jvm.options

vi config/jvm.options

配置elasticsearch.yml:

node.name: node-1            #配置当前es节点名称(默认是被注释的,并且默认有一个节点名)
cluster.name: my-application #默认是被注释的,并且默认有一个集群名
path.data: /home/lighthouse/es/data     # 数据目录位置
path.logs: /home/lighthouse/es/logs     # 日志目录位置
network.host: 0.0.0.0        #绑定的ip:默认只允许本机访问,修改为0.0.0.0后则可以远程访问cluster.initial_master_nodes: ["node-1", "node-2"] #默认是被注释的 设置master节点列表 用逗号分隔

根据以上设置的path.data和path.logs内容,需要在/home/lighthouse/目录下创建es目录,以及在es目录下创建文件data和logs。

 ElasticSearch的配置信息:

属性名    说明
cluster.name    配置elasticsearch的集群名称,默认是elasticsearch。建议修改成一个有意义的名称。
node.name    节点名,es会默认随机指定一个名字,建议指定一个有意义的名称,方便管理
path.conf    设置配置文件的存储路径,tar或zip包安装默认在es根目录下的config文件夹,rpm安装默认在/etc/ elasticsearch
path.data    设置索引数据的存储路径,默认是es根目录下的data文件夹,可以设置多个存储路径,用逗号隔开
path.logs    设置日志文件的存储路径,默认是es根目录下的logs文件夹
path.plugins    设置插件的存放路径,默认是es根目录下的plugins文件夹
bootstrap.memory_lock    设置为true可以锁住ES使用的内存,避免内存进行swap
network.host    设置bind_host和publish_host,设置为0.0.0.0允许外网访问
http.port    设置对外服务的http端口,默认为9200。
transport.tcp.port    集群结点之间通信端口
discovery.zen.ping.timeout    设置ES自动发现节点连接超时的时间,默认为3秒,如果网络延迟高可设置大些
discovery.zen.minimum_master_nodes    主结点数量的最少值 ,此值的公式为:(master_eligible_nodes / 2) + 1 ,比如:有3个符合要求的主结点,那么这里要设置为2
 

1.5 修改/etc/security/limits.conf文件 增加配置

sudo vi /etc/security/limits.conf

在文件最后,增加如下配置:

* soft nofile 65536
* hard nofile 65536

在/etc/sysctl.conf文件最后添加一行 vm.max_map_count=655360 添加完毕之后,执行命令: sysctl -p

vi /etc/sysctl.conf
vm.max_map_count=655360
sysctl -p

1.6启动ElasticSearch

启动前先给esuser用户权限,然后把用户切换到esuser用户

sudo chgrp -R lighthouse ./es
sudo chown -R lighthouse ./es
sudo chmod 777 es
su esuser

 

 

启动ElasticSearch

./bin/elasticsearch

 

然后参考资料修改了bin/elasticsearch-env文件,让es使用es目录里的jdk,

 重新启动,报错如下:

ERROR: [1] bootstrap checks failed
[1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
ERROR: Elasticsearch did not exit normally - check the logs at /home/lighthouse/es/logs/my-application.log

 把该释放的内存(可以使用free -h查看)都释放出来后,重新启动,成功了。

可以看到绑定了两个端口:

  • 9300:集群节点间通讯接口

  • 9200:客户端访问接口

访问http://43.138.0.199:9200/在客户端可以看到以下信息:

2、学习es,索引的维护

2.1创建索引

http://43.138.0.199:9200/student

PUT

2.2、获得索引信息

http://43.138.0.199:9200/student

GET

 2.3删除索引

http://43.138.0.199:9200/city

DELETE

3、为索引添加数据

增删改查

RESTful接口URL的格式:

http://localhost:9200/<index>/<type>/[<id>]

3.1、学生索引中添加小学学生类型的数据

 http://43.138.0.199:9200/student/xiaoxue/1

Post方式

Body如下:

{

    "name":"张三",

    "age":7

}

3.2、查看单个学生数据

 http://43.138.0.199:9200/student/xiaoxue/1

GET

3.3、修改学生信息

http://43.138.0.199:9200/student/xiaoxue/1

put

{

    "name": "张三",

    "age": 9

}

再次查看该学生信息,截图如下:

3.4查询所有学生列表

再添加一个学生,可以验证列表中的多个结果。

然后,调用查询接口:

get接口

http://43.138.0.199:9200/student/_search

继续验证分页查询

GET方式,from表示从哪个数据开始读取(第一个数据就是0,以此类推),size表示读取多少个数据。

http://43.138.0.199:9200/student/_search?from=0&size=2

然后查询第2页的数据,from要改成2,如下所示:

GET

http://43.138.0.199:9200/student/_search?from=2&size=2

继续验证查询条件:

GET

http://43.138.0.199:9200/student/_search?from=0&size=2

body如下:

{

  "query": {

    "match": {

      "name": "张三"

    }

  }

}

结果如下:

有关查询条件的说明如下:

 有关查询结果的说明如下:

4、在ES中执行SQL查询ES数据

POST

http://43.138.0.199:9200/_sql?format=txt

Body如下:

{

  "query": "SELECT name,age FROM student order by name desc limit 6"

}

执行结果如下:

参数format的取值说明如下:

formatAxxept HTTP Header说明
csvtext/csv逗号分隔
jsonapplication/jsonJSON格式
tsvtext/tab-separated-valuestab分隔
txttext/pain文本格式
yamlapplication/yamlyaml格式
vborapplication/vbor简洁的二进制
smileapplication/smile类似cbor的二进制

返回json格式的数据,验证如下:

 返回数据如下:

{
	"columns": [
		{
			"name": "name",
			"type": "text"
		},
		{
			"name": "age",
			"type": "long"
		}
	],
	"rows": [
		[
			"李四",
			8
		],
		[
			"张三",
			9
		],
		[
			"66",
			7
		],
		[
			"44",
			7
		],
		[
			"44",
			7
		],
		[
			"33",
			7
		]
	]
}

5、根据SQL生成DSL语句

POST

http://43.138.0.199:9200/_sql/translate

Body如下:

{

  "query": "SELECT name,age FROM student order by name desc limit 6"

}

执行结果如下:

{
	"size": 6,
	"_source": {
		"includes": [
			"name",
			"age"
		],
		"excludes": []
	},
	"sort": [
		{
			"name.keyword": {
				"order": "desc",
				"missing": "_first",
				"unmapped_type": "keyword"
			}
		}
	]
}

拿来查询数据

 可见,可以拿来查询数据。

6、安装分词插件以及使用

在查看安装了的插件列表时,突然报需要java11,然后我安装了java11,并配置了环境变量。

参考:ubuntu安装JDK11-CSDN博客

Elasticsearch提供插件机制对系统进行扩展
以安装analysis-icu这个分词插件为例

在线安装:

#查看已安装插件
bin/elasticsearch-plugin list
#安装插件
bin/elasticsearch-plugin install analysis-icu
#删除插件
bin/elasticsearch-plugin remove analysis-icu

注意:安装和删除完插件后,需要重启ES服务才能生效。
测试分词效果

POST _analyze
{
    "analyzer":"icu_analyzer",
    "text":"中华人民共和国"
}

执行结果要贴下:

http://43.138.0.199:9200/_analyze

Post

body如下:

{

    "analyzer":"icu_analyzer",

    "text":"中华人民共和国"

}

结果如下:

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

测试分词效果

#ES的默认分词设置是standard,会单字拆分
POST _analyze
{
    "analyzer":"standard",
    "text":"中华人民共和国"
}

#ik_smart:会做最粗粒度的拆
POST _analyze
{
    "analyzer": "ik_smart",
    "text": "中华人民共和国"
 }

#ik_max_word:会将文本做最细粒度的拆分
POST _analyze
{
    "analyzer":"ik_max_word",
    "text":"中华人民共和国"
}

执行结果要贴下:

创建索引时可以指定IK分词器作为默认分词器

PUT /es_db
{
    "settings" : {
        "index" : {
            "analysis.analyzer.default.type": "ik_max_word"
        }
    }
}

执行结果要贴下:

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ElasticSearch是一个开源的分布式搜索引擎,基于Lucene库。它可以快速地存储、搜索和分析大量的数据。ElasticSearch被广泛用于日志分析、全文搜索、安全分析和商业智能等领域。 以下是ElasticSearch入门指南: 1. 安装ElasticSearch:你可以从ElasticSearch官网下载并安装ElasticSearch。根据你的操作系统选择相应的版本。 2. 启动ElasticSearch:启动ElasticSearch非常简单。只需在终端中运行elasticsearch命令即可。 3. 探索ElasticSearch:通过在浏览器中输入http://localhost:9200/,可以访问ElasticSearch的REST API,并能看到ElasticSearch的基本信息。 4. 创建索引:在ElasticSearch中,数据被存储在索引中。你可以通过发送PUT请求来创建一个新的索引。例如,你可以使用以下命令来创建一个名为“my_index”的新索引: ``` PUT /my_index { "settings": { "number_of_shards": 1, "number_of_replicas": 0 } } ``` 5. 添加文档:在ElasticSearch中,文档是指一个JSON对象。你可以使用以下命令将文档添加到“my_index”索引中: ``` PUT /my_index/_doc/1 { "title": "Elasticsearch入门", "author": "John", "content": "Elasticsearch是一个开源的分布式搜索引擎" } ``` 6. 搜索文档:你可以使用以下命令来搜索“my_index”索引中的所有文档: ``` GET /my_index/_search ``` 7. 进行查询:你可以使用查询语句来搜索“my_index”索引。例如,你可以使用以下命令来搜索标题包含“Elasticsearch”的所有文档: ``` GET /my_index/_search { "query": { "match": { "title": "Elasticsearch" } } } ``` 这就是ElasticSearch入门指南。对于更深入的学习,你可以查看ElasticSearch官方文档。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值