1. ElastricSearch
1. 安装
1.1 下载安装
docker pull elasticsearch:7.4.2
存储和检索数据。
docker pull kibana:7.4.2
可视化检索数据,相当于SQLyog对mysql。
echo "http.host: 0.0.0.0" >> ./config/elasticsearch.yml
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /home/tclab/env/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /home/tclab/env/elasticsearch/data:/usr/share/elasticsearch/data \
-v /home/tclab/env/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2
docker run --name kibana -e ELASTICSEARCH_URL=http://0.0.0.0:9200 -p 5601:5601 -d kibana:7.4.2
sudo docker update d51f 9ece --restart=always
//永久重启
2. 使用
2.1 put
2.1.1 带id
http://172.16.6.94:9200/customer/external/1
😠 切记put方式不允许不带id的。
2.2 post
http://172.16.6.94:9200/customer/external/
:happy: post方式可以不带id。
2.3 delete
DELETE customer/external/1
DELETE customer
// 只能直接删除索引(数据库)
2.4 bulk批量API
:happy: 必须得发post
请求
🍦 例子:
3.检索
3.1 SearchAPI
ES支持两种基本方式检索:
- 通过REST request URI 发送搜索参数(uri + 检索参数)
- 另一个是通过 REST request body 来发送它们(uri + 请求体)
🍧 例子:
3.2 QueryDS
ES提供可以执行查询的json
风格的DSL(domain-specific language 领域特定语言)。这个被称为Query DSL。
🍨例子:查询语句的典型结构。
{
QUERY_NAME:{
ARGUMENT:VALUE,
ARGUMENT:VALUE,...
}
}
{
"query": {
"match_all":{}
},
"sort":[
{
"balance": {
"order": "desc"
}
}
]
}
3.2.1 match_phrase 短语匹配
将需要匹配的值当成一个整体单词(不分词)进行检索。
{
"query":{
"match_phrase":{
"address":"mill road"
}
}
}
最终查出address中包含mill或者road或者mill road的所有记录,并给出相关性得分。
3.2.2 multi_match 多字段匹配
{
"query":{
"multi_match":{
"query":"mill",
"fileds":["state","address"]
}
}
}
state或者address包含mill。
3.2.3 复合查询
"query":{
"bool":{
"must": [
{
"match":{
"gender": "F"
}
},
{
"match":{
"address": "mill"
}
}
]
}
}
3.2.4 结果过滤filter
filter不会进行相关性得分计算。
3.2.5 term
2. NACOS
2.1 下载
Releases · alibaba/nacos (github.com)
启动
- Linux/Unix/Mac , execute
sh startup.sh -m standalone
(ubuntu 使用bash)- Windows , execute
cmd startup.cmd
- nacos/nacos 默认登录
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
application.properties
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
Use the @EnableDiscoveryClient annotation to turn on service registration and discovery.
@SpringBootApplication @EnableDiscoveryClient public class ProviderApplication { public static void main(String[] args) { SpringApplication.run(ProviderApplication.class, args); } @RestController class EchoController { @GetMapping(value = "/echo/{string}") public String echo(@PathVariable String string) { return string; } } }
2.1.1 远程调用
- 使用Feign
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>${spring-openfeign.version}</version>
</dependency>
- 编写接口,告诉springcloud接口需要调用远程服务。声明接口的每一个方法都是调用哪个远程服务的哪个请求。
- 开启远程调用功能。
问题
1. Kibana
1.1 无法连接ES
“Unable to revive connection: http://172.16.6.94:9200/“
解决方案:
进入kibana容器:
docker exec -it d51f /bin/bash
进入config目录
cd config
修改kibana.yml文件
vi kibana.yml
。修改elasticsearch.hosts的地址, 改成es的ip server.name: kibana server.host: “0” elasticsearch.hosts: [ “http://192.168.56.10:9200" ]
将其中的host地址改为ES地址。
- 修改完成配置文件后, 重启docker的kibana服务。