网易内推联系我哦

网易无偿内推,点击下方【首页】置顶帖查看说明

0%

异常处理

出现异常

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

嵌套查询

嵌套示例

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));

依赖

<dependency>
    <groupId>org.java-websocket</groupId>
    <artifactId>Java-WebSocket</artifactId>
    <version>1.5.2</version>
</dependency>

代码

@Test
public void testWssWithWebSocketServer() throws Exception {
    TrustManager trustManager = new X509ExtendedTrustManager() {
        @Override
        public void checkClientTrusted(X509Certificate[] chain, String authType, Socket socket) throws CertificateException {

        }

        @Override
        public void checkServerTrusted(X509Certificate[] chain, String authType, Socket socket) throws CertificateException {

        }

        @Override
        public void checkClientTrusted(X509Certificate[] chain, String authType, SSLEngine engine) throws CertificateException {

        }

        @Override
        public void checkServerTrusted(X509Certificate[] chain, String authType, SSLEngine engine) throws CertificateException {

        }

        @Override
        public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {

        }

        @Override
        public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {

        }

        @Override
        public X509Certificate[] getAcceptedIssuers() {
            return new X509Certificate[]{};
        }
    };
    SSLContext sslContext = SSLContext.getInstance("TLS");
    sslContext.init(null, new TrustManager[]{trustManager}, null);

    URI uri = URI.create("wss://127.0.0.1:8443/websocket");
    SSLSocketFactory socketFactory = sslContext.getSocketFactory();
    WebSocketClient webSocketClient = new WebSocketClient(uri) {
        @Override
        public void onOpen(ServerHandshake serverHandshake) {
            logger.info("onOpen");
        }

        @Override
        public void onMessage(String s) {
            logger.info("onMessage: " + s);
        }

        @Override
        public void onClose(int i, String s, boolean b) {
            logger.info("onClose");
        }

        @Override
        public void onError(Exception e) {
            logger.info("onError: " + e.getMessage(), e);
        }
    };
    webSocketClient.setSocketFactory(socketFactory);
    webSocketClient.connectBlocking();
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
    webSocketClient.send(simpleDateFormat.format(new Date()));
    webSocketClient.closeBlocking();
}

main.bundle.js:20686 Mixed Content: The page at 'https://***' was loaded over HTTPS, but attempted to connect to the insecure WebSocket endpoint 'ws://***/websocket/***'. This request has been blocked; this endpoint must be available over WSS.
Uncaught (in promise) DOMException: Failed to construct 'WebSocket': An insecure WebSocket connection may not be initiated from a page loaded over HTTPS.

https://blog.csdn.net/u012977315/article/details/84944708