资产管理平台


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请求

🍦 例子:

image-20211114141715516

3.检索

3.1 SearchAPI

ES支持两种基本方式检索:

  1. 通过REST request URI 发送搜索参数(uri + 检索参数)
  2. 另一个是通过 REST request body 来发送它们(uri + 请求体)

🍧 例子:

image-20211114163024759

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
  1. 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 远程调用

  1. 使用Feign
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
    <version>${spring-openfeign.version}</version>
</dependency>
  1. 编写接口,告诉springcloud接口需要调用远程服务。声明接口的每一个方法都是调用哪个远程服务的哪个请求。
  2. 开启远程调用功能。

问题

1. Kibana

1.1 无法连接ES

“Unable to revive connection: http://172.16.6.94:9200/“

解决方案:

  1. 进入kibana容器:docker exec -it d51f /bin/bash

  2. 进入config目录 cd config

  3. 修改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地址。

  1. 修改完成配置文件后, 重启docker的kibana服务。

2. springcloud


文章作者: 小灰灰
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 小灰灰 !
评论
  目录