0%
基于 React 搭建 ArcoDesign 管理模板
异常处理
出现异常
husky - Git hooks installed
Usage:
husky install [dir] (default: .husky)
husky uninstall
husky set|add <file> [cmd]
npm ERR! code 2
npm ERR! path E:\code\React\hello-arco
npm ERR! command failed
npm ERR! command C:\Windows\system32\cmd.exe /d /s /c husky install && husky add .husky/pre-commit 'npm run pre-commit'
处理方式
rm -rf .git/hooks // 删除项目路径下的 .git/hooks 文件夹
npm install
For Husky v7 or greater, do the following:
# For NPM
npm install husky@7 --save-dev \
&& npx husky-init \
&& npm exec -- github:typicode/husky-4-to-7 --remove-v4-config
# For Yarn
yarn add husky@7 --dev \
&& npx husky-init \
&& npm exec -- github:typicode/husky-4-to-7 --remove-v4-config
# or
yarn add husky@7 --dev \
&& yarn dlx husky-init --yarn2 \
&& npm exec -- github:typicode/husky-4-to-7 --remove-v4-config
https://stackoverflow.com/questions/66246587/how-to-fix-error-not-found-husky-run-when-committing-new-code
elastic 对嵌套对象进行增删改查
嵌套查询
嵌套示例
es 的 mapping 中有如下嵌套 List 对象:
"properties": {
"type": "nested",
"properties": {
"value": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
},
"key": {
"type": "keyword"
}
}
}
查询示例
存在查询
BoolQueryBuilder bool = QueryBuilders.boolQuery();
TermQueryBuilder termQuery = QueryBuilders.termQuery("properties.key", key);
BoolQueryBuilder filterBoolQuery = QueryBuilders.boolQuery().filter(termQuery);
bool.filter(QueryBuilders.nestedQuery("properties", filterBoolQuery, ScoreMode.None));
不存在查询
BoolQueryBuilder bool = QueryBuilders.boolQuery();
TermQueryBuilder termQuery = QueryBuilders.termQuery("properties.key", key);
BoolQueryBuilder filterBoolQuery = QueryBuilders.boolQuery().filter(termQuery);
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery("properties", filterBoolQuery, ScoreMode.None);
bool.filter(QueryBuilders.boolQuery().mustNot(nestedQuery));
范围查询
如果你的时间戳是以毫秒为单位的长整型数字,并且被存储为字符串,你仍然可以使用 rangeQuery 进行范围查询。
只需要将你的时间范围也转换为相应的字符串格式即可。
BoolQueryBuilder bool = QueryBuilders.boolQuery();
bool.must(QueryBuilders.nestedQuery(
"properties", // 嵌套字段的路径
QueryBuilders.boolQuery()
.must(QueryBuilders.termQuery("properties.key", "updatetime")) // 匹配key
.must(QueryBuilders.rangeQuery("properties.value.keyword") // 对value进行范围查询
.from(String.valueOf(startTimeMillis))
.to(String.valueOf(endTimeMillis))),
ScoreMode.None // 分数模式,这里不需要计算分数
));
模糊查询
BoolQueryBuilder bool = QueryBuilders.boolQuery();
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery()
.filter(QueryBuilders.termQuery("properties.key", key))
.filter(QueryBuilders.matchPhraseQuery("properties.value", value));
bool.filter(QueryBuilders.nestedQuery("properties", queryBuilder, ScoreMode.Total));
精确查询
BoolQueryBuilder bool = QueryBuilders.boolQuery();
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery()
.filter(QueryBuilders.termQuery("properties.key", key))
.filter(QueryBuilders.termQuery("properties.value.keyword", value));
bool.filter(QueryBuilders.nestedQuery("properties", queryBuilder, ScoreMode.Total));
Query boolQuery = Query.of(q2 -> q2.bool(b -> b
.filter(f -> f.term(t -> t.field("properties.key").value(key)))
.filter(f -> f.term(m -> m.field("properties.value.keyword").value(value)))
));
Query nestedQuery = Query.of(q -> q.nested(NestedQuery.of(n -> n.path("properties").query(boolQuery))));
queryList.add(nestedQuery);
精确多值查询
BoolQueryBuilder bool = QueryBuilders.boolQuery();
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery()
.filter(QueryBuilders.termQuery("properties.key", key))
.filter(QueryBuilders.termsQuery("properties.value.keyword", value.split(";;"))); // 注意用 termsQuer
bool.filter(QueryBuilders.nestedQuery("properties", queryBuilder, ScoreMode.Total));
UpdateRequest 更新 es 信息汇总
可以使用 UpdateRequest 更新 es 文档信息。