- 《自开发了一款短视频去水印小程序》(2023年06月06日)
- 《es 字符串时间格式的字符串怎么做小时查询》(2024年04月11日)
1、pip install -r requirements.txt
使用清华大学的镜像源:
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
使用阿里云的镜像源:
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
如果表已经存在且已经有了数据:
再创建一个聚集索引(会自动将主键上的聚集索引变为非聚集索引)
CREATE cluster INDEX test_index ON "db"."tablename" (testField);
索引类型选唯一索引
然后删掉刚创建的聚集索引
最后再加上text类型的字段即可
因为es会对搜索条件做分词处理,所以就会导致es查询的内容不是想要的
不过可以是有script的方式查询,但是效率很低很慢
方式一:
// 创建一个Script,用于执行模糊匹配
Script script = new Script(ScriptType.INLINE, "painless", "doc['plateNo.keyword'].value.contains(params.query)",
Collections.singletonMap("query", queryParam.getFieldValue().toString()));
// 创建一个ScriptQueryBuilder,并将其包装在BoolQueryBuilder中,你也可以根据需求构建其他类型的查询
ScriptQueryBuilder scriptQuery = QueryBuilders.scriptQuery(script);
boolQuery.must(scriptQuery);
方式二:
boolQuery.must(QueryBuilders.wildcardQuery("plateNo.keyword", "*" + queryParam.getFieldValue().toString() + "*"));
因为客户是政府项目,端口要开放策略
所有采用用nginx反代es
因为连接后面多了一个/es/
# es 配置
elasticsearch:
userName: elastic
password: DrnFCKEAgsMNMSMH
hosts: 10.68.182.147:80
scheme: http
connectTimeOut: 1000
socketTimeOut: 30000
connectionRequestTimeOut: 500
maxConnectNum: 100
maxConnectNumPerRoute: 100
#nginx反代的目录
contextPath: /es/
所有创建连接这里要改为
/**
* 如果@Bean没有指定bean的名称,那么方法名就是bean的名称
*/
@Bean(name = "restHighLevelClient")
public RestHighLevelClient restHighLevelClient() {
// 构建连接对象
RestClientBuilder builder = RestClient.builder(getEsHost());
//这里就是nginx配置的反代目录 /es/
if (StringUtils.isNotBlank(contextPath)) {
builder.setPathPrefix(contextPath);
}
// 连接延时配置
builder.setRequestConfigCallback(requestConfigBuilder -> {
requestConfigBuilder.setConnectTimeout(connectTimeOut);
requestConfigBuilder.setSocketTimeout(socketTimeOut);
requestConfigBuilder.setConnectionRequestTimeout(connectionRequestTimeOut);
return requestConfigBuilder;
});
// 连接数配置
builder.setHttpClientConfigCallback(httpClientBuilder -> {
httpClientBuilder.setMaxConnTotal(maxConnectNum);
httpClientBuilder.setMaxConnPerRoute(maxConnectNumPerRoute);
httpClientBuilder.setDefaultCredentialsProvider(getCredentialsProvider());
return httpClientBuilder;
});
return new RestHighLevelClient(builder);
}