当前位置: 首页 > news >正文

Elasticsearch Java Api Client中DSL语句的查询方法汇总

说明:示例代码依赖的是co.elastic.clients:elasticsearch-java:8.16.1。

1、termQuery 方法

  • 用途:用于精确匹配某个字段的完全相等的值。这在查询如文档的 ID、状态码等具有明确取值的字段时非常有用。
  • 参数说明:
    • field:这是一个字符串参数,用于指定要进行精确匹配查询的字段名称。例如,在一个存储产品信息的索引中,如果要查询产品 ID,这个参数可能是 "product_id"。
    • value:这是要与指定字段进行精确匹配的值。它的类型根据字段类型而定。例如,如果查询的是字符串类型的产品 ID,那么这个值就是一个字符串,如 "12345"。
  • 示例代码:
    • 假设在一个名为 "products" 的索引中查询产品 ID 为 "ABC123" 的产品。
    • import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
      TermQuery.Builder term = QueryBuilders.term();
      term.field("product_id");
      term.value("ABC123");
      // 生成dsl
      SearchRequest.Builder searchBuilder = new SearchRequest.Builder();
      searchBuilder.query(value);
      searchBuilder.from(0);
      searchBuilder.size(10);
      String dsl = JsonpUtils.toJsonString(searchBuilder.build(), new JacksonJsonpMapper());

2、termsQuery 方法

  • 用途:用于查询某个字段匹配多个精确值中的一个,类似于 SQL 中的 IN 操作。可以一次查询某个字段是否匹配给定的多个值中的任意一个。
  • 参数说明:
    • field:要查询的字段名称,与 termQuery 中的 field 类似,是一个字符串,用于指定字段。
    • value:一个可迭代对象(如 List、Set 等),其中包含了多个要匹配的精确值。这些值的类型需要与字段的类型相匹配。
  • 示例代码:
    • 查询产品状态为 "active" 或 "inactive" 的产品。
    • import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
      List<FieldValue> fieldValues = Arrays.asList(FieldValue.of("active"), FieldValue.of("inactive"));
      TermsQueryField termsQueryField = TermsQueryField.of(t -> t.value(fieldValues));
      TermsQuery.Builder terms = QueryBuilders.terms();
      terms.field("product_status");
      terms.terms(termsQueryField);
      Query query = terms.build()._toQuery();
  • 备注:在根据文档主键(_id)进行精确查询时,强烈建议使用IdsQuery

3、matchQuery 方法

  • 用途:进行全文本搜索,它会对查询字符串进行分词处理,然后与索引中的文本字段进行匹配。这是在进行文本内容搜索时最常用的方法之一。
  • 参数说明:
    • field:要查询的文本字段名称,用于指定在哪个字段中进行全文搜索。
    • query:要匹配的文本内容,这个字符串会被分析器进行分词后再与索引中的文档进行匹配。
    • zeroTermsQuery:用于查询没有匹配任何文档的查询类型。可以用来定义在这种情况下应该返回什么样的结果。比如,可以配置它返回所有的文档(All),或者返回一个自定义的默认结果集,如最热门的文档或者最新的文档等。默认为None。
  • 示例代码:
    • 在一个包含文章内容的索引中查询包含 "机器学习算法" 的文章。
    • import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
      MatchQuery.Builder match = QueryBuilders.match();
      match.field("article_content");
      match.query("机器学习算法");
      match.zeroTermsQuery(ZeroTermsQuery.None);
      Query query = match.build()._toQuery();

4、multiMatchQuery 方法

  • 用途:用于在多个字段中进行全文本搜索,当不确定文本在哪个字段中时很有用。可以同时在多个相关的文本字段中查找给定的文本内容。
  • 参数说明:
    • fields:一个包含多个要查询的文本字段名称的数组。这些字段将同时被用于全文搜索。
    • query:要匹配的文本内容,和 matchQuery 中的 query 一样,会被分词后与索引中的文档进行匹配。
  • 示例代码:
    • 在一个包含产品信息的索引中,查询在产品名称或产品描述中包含 "智能手表" 的产品。
    • import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
      MultiMatchQuery.Builder multiMatch = QueryBuilders.multiMatch();
      multiMatch.fields("product_name", "product_description");
      multiMatch.query("智能手表");
      multiMatch.zeroTermsQuery(ZeroTermsQuery.None);
      Query query = multiMatch.build()._toQuery();

5、rangeQuery 方法

  • 用途:用于查询在某个数值范围或日期范围内的文档,比如查询价格区间、时间区间等。
  • 参数说明:
    • field:要查询范围的字段名称,用于指定是哪个字段的范围查询。
    • gte:范围的起始值(包含),类型根据字段类型而定,对于数值字段是数值类型,对于日期字段是日期类型。
    • lte:范围的结束值(包含),同样类型根据字段类型而定。
    • gt:范围的起始值(不包含)。
    • lt:范围的结束值(不包含)。
    • relation:参数为RangeRelation,主要用于在范围查询(RangeQuery)中定义范围关系,也就是确定一个值与查询范围之间的关系是怎样的,有三个值:范围内(Within)、包含(Contains)、交叉(Intersects)。
  • 示例代码:
    • 查询价格在 100 到 200 之间(包含边界值)的产品。
    • import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
      // 支持Number、Date、Term
      NumberRangeQuery productPrice = NumberRangeQuery.of(n -> n.field("product_price").gt(100d).lt(200d)
      );
      DateRangeQuery.Builder dateRangeQuery = new DateRangeQuery.Builder();
      TermRangeQuery.Builder termRangeQuery = new TermRangeQuery.Builder();
      RangeQuery.Builder range = QueryBuilders.range();
      range.number(productPrice);
      range.term(termRangeQuery.build());
      range.date(dateRangeQuery.build());
      Query query = range.build()._toQuery();

6、existsQuery 方法

  • 用途:用于查询某个字段存在的文档,忽略该字段值是什么。这在检查文档是否包含特定字段时很有用。
  • 参数说明:
    • field:要检查是否存在的字段名称,是一个字符串。
  • 示例代码:
    • 查询包含评论内容字段(comment_content)的产品。
    • import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
      ExistsQuery.Builder exists = QueryBuilders.exists();
      exists.field("comment_content");
      Query query = exists .build()._toQuery();

7、boolQuery 方法

  • 用途:用于组合多个查询条件,通过布尔逻辑(must、should、must_not)来构建复杂的查询。这是构建复杂搜索逻辑的关键方法。
  • 参数说明:
    • must:一个包含多个查询条件的列表,这些条件必须都满足(相当于逻辑与)。列表中的元素是 Query 类型的对象。
    • should:一个包含多个查询条件的列表,这些条件满足其中一个或多个即可(相当于逻辑或)。同样,列表中的元素是 Query 类型的对象。
    • must_not:一个包含多个查询条件的列表,这些条件都不能满足(相当于逻辑非)。列表中的元素也是 Query 类型的对象。
    • filter:filter查询就是用于精确过滤文档,它只关注文档是否符合条件,将匹配的文档包含在结果中。他们都不进行打分、排序或相关性计算,只担心是否匹配。
  • 示例代码:
    • 查询价格大于 100 且产品名称包含 "智能手机" 或者产品描述包含 "高清屏幕" 的产品。
    • import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
      Query range = QueryBuilders.range(r -> r.number(NumberRangeQuery.of(n -> n.gt(100d))));
      Query match = QueryBuilders.match(m -> m.field("product_name").query("智能手机"));
      Query match2 = QueryBuilders.match(m -> m.field("product_description").query("高清屏幕"));
      BoolQuery.Builder bool = QueryBuilders.bool();
      bool.must(range,QueryBuilders.bool().should(match,match2).build()._toQuery());
      Query query = bool.build()._toQuery();

8、fuzzyQuery 方法

  • 用途:用于模糊查询,它允许一定程度的拼写错误或近似匹配,基于编辑距离来判断。这在处理用户可能输入错误的查询文本时很有用。
  • 参数说明:
    • field:要查询的字段名称,用于指定在哪个字段进行模糊查询。
    • value:要匹配的近似值,是一个字符串。
    • fuzziness:允许的编辑距离,默认是 AUTO,可以是具体的数字(如 2,表示允许两个字符的编辑距离)。
  • 示例代码:
    • 查询可能拼写有误的产品名称,比如 "shouji"(正确是 "手机")。
    • import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
      Query query = QueryBuilders.fuzzy(f -> f.field("product_name").value("shouji").fuzziness("2"));
      

9、prefixQuery 方法

  • 用途:用于查询某个字段以指定前缀开头的文档。这在搜索以特定字符序列开头的内容时很有用。
  • 参数说明:
    • field:要查询的字段名称,用于指定字段。
    • prefix:要匹配的前缀,是一个字符串。
  • 示例代码:
    • 查询以 "华为" 开头的产品名称的产品。
    • import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
      Query query = QueryBuilders.prefix(p -> p.field("product_name").value("华为"));
      

10、wildcardQuery 方法

  • 用途:用于通配符查询,支持 *(代表多个字符)和 ?(代表一个字符)。这在处理不确定部分内容的搜索时很有用。
  • 参数说明:
    • field:要查询的字段名称,用于指定字段。
    • value:包含通配符的要匹配的值,是一个字符串。
  • 示例代码:
    • 查询产品名称包含 "手机" 字样,后面可以跟任意字符的产品。
    • import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
      Query query = QueryBuilders.wildcard(w->w.field("product_name").value("*手机*"));
      

11、MatchPhraseQuery方法

  • 用途:用于进行精确短语匹配的查询方法。它的主要目的是找到文档中包含与查询短语完全相同顺序的词的文本内容。与match查询不同,match查询会对查询词进行分词后分别匹配文档中的词,而MatchPhraseQuery重点关注短语的完整性和词序。
  • 参数说明:
    • field:用于指定要在哪个字段中进行短语匹配。
    • query:这个参数用于指定要匹配的短语内容,是一个字符串。
    • slop:用于指定短语中词的移动 “距离”,也就是允许词与词之间间隔多少个其他词仍然被视为匹配。默认值是 0,表示词必须是连续出现的。
  • 示例代码:
    • book_summary字段中查找包含 “深度学习架构” 短语。
    • import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
      Query query = MatchPhraseQuery matchPhraseQuery = MatchPhraseQuery.of(q -> q.field("book_summary").query("深度学习架构"));
      

12、NestedQuery方法

  • 用途:用于处理嵌套对象(nested object)查询的方法。在 Elasticsearch 中,嵌套对象是指一个对象类型的字段,其内部包含多个子字段,并且这些子字段之间存在关联关系。
  • 参数说明:
    • query:用于指定在嵌套对象内部进行的查询内容。这个查询可以是任何合法的 Elasticsearch 查询类型,如term查询、match查询等。它定义了如何在嵌套对象的字段中查找匹配的文档。
    • path:用于指定嵌套对象在文档中的路径。它是一个字符串,清晰地表明了从文档根节点到嵌套对象的路径。
    • scoreMode:用于指定如何计算包含嵌套对象的文档的相关性得分。它有多种取值,如Avg(平均)、Max(最大值)、None(不计算得分)等。
  • 示例代码:
    • 在产品评论中查找包含 “质量很好” 并且评分大于 4 的评论对应的产品的示例。
    • import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
      BoolQuery.Builder boolQueryBuilder = QueryBuilders.bool();
      boolQueryBuilder.must(QueryBuilders.match(m->m.field("reviews.content").query("质量很好")));
      boolQueryBuilder.must(QueryBuilders.range(r->r.number(n->n.field("reviews.rating").gt(4d))));
      NestedQuery nestedQuery = NestedQuery.of(n -> n.path("reviews").query(boolQueryBuilder.build()._toQuery()).scoreMode(ChildScoreMode.Avg));
      Query query = nestedQuery._toQuery();

13、MatchPhrasePrefixQuery

  • 用途:用于进行模糊的短语匹配,特别是在短语的最后一个词上允许前缀匹配。它不仅关注短语中词的顺序,还允许最后一个词以给定的前缀开始。
  • 参数说明:
    • field:用于指定要在哪个字段中进行短语前缀匹配。
    • query:这个参数用于指定要匹配的短语内容。它是一个字符串,代表用户期望在指定字段中找到的短语前缀部分。
    • maxExpansions:用于限制最后一个词(进行前缀匹配的词)的扩展数量。当进行前缀匹配时,Elasticsearch 会根据索引中的词汇来扩展匹配的词项。这个参数指定了最多扩展多少个词项。
  • 示例代码:
    • book_title字段中查找以 “人工智能基础” 开头的书籍。
    • import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
      MatchPhrasePrefixQuery matchPhrasePrefixQuery = MatchPhrasePrefixQuery.of(q -> q.field("book_title").query("人工智能基础"));
      Query query = matchPhrasePrefixQuery._toQuery();
      

14、MatchBoolPrefixQuery

  • 用途:用于进行多词模糊前缀匹配的查询方法。它能够对输入的多个词进行分析,每个词都可以被当作一个前缀来匹配文档中的相应字段内容,并且通过布尔逻辑来综合确定最终匹配的文档。这种查询方式在实现灵活的搜索建议、自动补全以及处理用户输入不太精确的搜索词时非常有用,能够扩大搜索范围,找到更多可能相关的文档。
  • 参数说明:
    • field:用于指定要在哪个字段中进行匹配操作。
    • query:该参数用于指定要进行匹配的查询字符串。它是一个字符串,包含了用户输入的一个或多个词(词与词之间可以有空格等分隔),这些词都会被当作前缀去匹配相应字段中的内容。
    • analyzer:用于指定分析器,分析器会对query参数中的字符串进行分词等预处理操作。如果不指定,Elasticsearch 会使用对应字段默认配置的分析器。
    • fuzziness:用于设置模糊匹配的程度,也就是允许词项之间有一定的编辑距离(比如拼写错误、少个字母或多个字母等情况)来进行匹配。
    • prefixLength:用于指定词项作为前缀时的最小长度。比如设置为 2,意味着只有长度大于等于 2 的词项部分才会被当作前缀去进行匹配。通过设置这个参数,可以避免一些过短、无意义的前缀匹配,对查询结果的精准性进行一定控制。
    • maxExpansions:用于限制每个词项作为前缀进行扩展匹配时的最大扩展数量。
  • 示例代码:
    • 在产品名称字段中查找与用户不太准确输入的 “智能手 高清屏” 相关产品。
    • import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
      MatchBoolPrefixQuery matchBoolPrefixQuery = MatchBoolPrefixQuery.of(q -> q.field("product_name").query("智能手 高清屏"));
      Query query = matchBoolPrefixQuery._toQuery();
      

15、QueryStringQuery

  • 用途:它允许用户使用类似于查询语言的语法在一个或多个字段中进行灵活的文本搜索。这种查询方式可以处理包含逻辑运算符(如 AND、OR、NOT)、通配符(如 *、?)、模糊匹配、字段指定等多种复杂的查询需求,能够根据用户输入的复杂查询字符串进行全面的文本匹配。
  • 参数说明:
    • fields:用于指定要在哪些字段中进行查询。它可以是一个数组类型的参数,包含多个字段名。
    • query:用于接收用户输入的查询字符串。这个字符串可以包含各种查询语法。
    • analyzer:用于指定分析器。分析器会对query参数中的字符串进行分词、词干提取、停用词处理等操作。如果不指定,Elasticsearch 会使用默认的分析器来处理查询字符串。
    • defaultOperator:用于指定逻辑运算符的默认行为。它可以取值为Operator.And或者Operator.Or
    • lenient:是一个布尔值参数,用于指定查询是否宽松。当设置为true时,查询在遇到一些数据类型不匹配或者其他轻微错误时,仍然会尝试继续执行查询,而不是直接抛出异常。不过,使用宽松模式可能会导致一些意外的查询结果或者性能问题,需要谨慎使用。
  • 示例代码:
    • 在书籍标题和摘要中查找包含 “人工智能” 或者 “机器学习” 相关内容。
    • import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
      QueryStringQuery queryStringQuery = QueryStringQuery.of(q -> q.query("book_title:人工智能 OR book_summary:机器学习"));
      Query query = queryStringQuery._toQuery();
      

16、MoreLikeThisQuery

  • 用途:用于查找与给定文档或文本相似的其他文档的查询方法。它基于文档内容的相似度来进行搜索,通过分析文档中的词项、词频、字段权重等因素,找到在内容上具有相似性的其他文档。这种查询在推荐系统、相似内容查找等场景中非常有用。
  • 参数说明:
    • fields:用于指定要比较相似度的字段。这是一个字符串数组参数,其中每个元素是文档中的一个字段名。
    • like:这是一个核心参数,用于指定参考的文档或文本内容来查找相似文档。它可以有多种形式,比如可以是一个已经存在于索引中的文档的 ID,或者是一个包含文本内容的字符串等。如果是基于已有文档的 ID,Elasticsearch 会从索引中获取该文档的内容来进行相似度计算;如果是文本内容,就直接使用这个文本内容进行相似度分析。
    • minTermFreq:用于设置词项在文档中出现的最小频率。只有频率高于这个值的词项才会被用于相似度计算。
    • maxQueryTerms:用于限制用于构建查询的最大词项数量。在相似度计算过程中,会根据参考文档或文本内容提取词项来构建查询,这个参数规定了最多提取多少个词项。通过限制词项数量,可以控制查询的复杂度和性能,避免生成过于复杂的查询。例如,设置为10,则最多使用10个词项来构建查询。例如,设置为2,则只考虑在文档中出现次数大于等于2的词项。
    • minDocFreq:用于设置词项在索引的文档集合中出现的最小文档频率。只有在足够数量的文档中出现的词项才会被用于相似度计算。例如,设置为3,则只考虑在至少3个文档中出现过的词项。
    • boostTerms:用于提升某些词项在相似度计算中的重要性。这是一个布尔值参数,当设置为true时,会对用于相似度计算的词项根据它们在文档中的频率进行提升。频率越高的词项,在相似度计算中的权重越高,这样可以使更具代表性的词项对相似度结果产生更大的影响。
  • 示例代码:
    • book_title字段中查找以 “人工智能基础” 开头的书籍。
    • import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
      MoreLikeThisQuery moreLikeThisQuery = MoreLikeThisQuery.of(m -> m.fields("article_title", "article_content").like(Like.of(l->l.text("这是一篇参考文章的内容"))).minTermFreq(2).maxQueryTerms(10));
      Query query = moreLikeThisQuery._toQuery();
      

17、MatchNoneQuery

  • 用途:它用于构建一个不匹配任何文档的查询。例如,当你想要模拟一个没有任何结果的搜索场景,或者在构建复杂的筛选逻辑时,需要明确表示某个子条件不应该匹配任何文档,就可以使用MatchNoneQuery
  • 示例代码:
  • import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
    MatchNoneQuery.Builder matchNone = QueryBuilders.matchNone();
    Query query = matchNone.build()._toQuery();
    

18、RegexpQuery

  • 用途:一种基于正则表达式进行文本匹配的查询方法。它允许用户使用正则表达式的语法来定义复杂的文本匹配模式,从而在文档的指定字段中查找符合该模式的内容。这种查询方式提供了高度灵活的文本搜索能力,能够处理各种复杂的文本匹配需求,例如查找具有特定格式的文本、包含特定模式的字符串等。
  • 参数说明:
    • field:用于指定要在哪个字段中进行正则表达式匹配。
    • value:用于指定正则表达式的内容。它是一个字符串,遵循正则表达式的语法规则。
    • flags:用于设置正则表达式的标志位,这些标志位可以改变正则表达式的匹配行为。例如,CASE_INSENSITIVE标志可以使正则表达式匹配时忽略大小写,MULTILINE标志可以使^$分别匹配每行的开头和结尾(而不是整个文本的开头和结尾)等。这些标志位可以通过java.util.regex.Pattern类中定义的常量来指定。
  • 示例代码:
    • 在书籍标题字段中查找以 “数据” 开头的书籍。
    • import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
      RegexpQuery regexpQuery = RegexpQuery.of(r -> r.field("book_title").value("^数据.*"));
      Query query = regexpQuery._toQuery();

19、TermsSetQuery

  • 用途:用于在文档的某个字段中查找包含一组特定词项组合的文档。它与简单的terms查询不同,terms查询只要求文档字段匹配一组词项中的任意一个词项即可,而TermsSetQuery要求文档字段必须包含指定的词项组合,并且可以设置匹配的最小词项数量,提供了更严格的匹配条件,适用于需要精确匹配一组相关词项的场景。
  • 参数说明:
    • field:用于指定要在哪个字段中进行词项组合匹配。
    • terms:用于指定要匹配的词项集合。它是一个包含字符串的列表,代表了需要在指定字段中查找的一组词项。
    • minimumShouldMatchField:用于指定一个字段,该字段的值将决定terms参数中词项至少需要匹配的数量。这为匹配条件增加了动态性。例如,可以有一个num_required_features字段,其值表示文档应该匹配的最少特征数量。如果这个字段的值为 2,那么文档的指定字段(由field参数指定)至少要包含terms参数中的 2 个词项才能匹配成功。
    • minimumShouldMatchScript:用于指定一个脚本,该脚本的返回值将决定terms参数中词项至少需要匹配的数量。
  • 示例代码:
    • 查找产品价格大于 1000 且产品特征至少包含 “高清屏幕” 和 “快速充电” 这两个特征的产品。
    • import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
      List<String> termsList = Arrays.asList("高清屏幕", "快速充电");
      Script script = Script.of(s -> s.source("doc['product_price'].value > 1000? 2 : 1"));
      TermsSetQuery termsSetQuery = TermsSetQuery.of(t -> t.field("product_features").terms(termsList).minimumShouldMatchScript(script));
      Query query = termsSetQuery._toQuery();

20、SimpleQueryStringQuery

  • 用途:用于文本搜索的查询方法,它提供了一种比QueryStringQuery更简单、更容错的查询方式。它的语法相对简洁,自动处理一些复杂的查询语法细节,并且对用户输入的错误或不规范的查询字符串具有更好的容忍性,适用于实现简单快速的文本搜索功能。
  • 参数说明:
    • fields:用于指定要在哪些字段中进行查询。它是一个数组类型的参数,包含多个字段名。
    • query:用于接收用户输入的查询字符串。这个字符串可以包含关键词、部分短语等简单的文本内容。
    • flags:用于控制查询字符串的解析方式,它是一个枚举类型(SimpleQueryStringFlag)的参数,可以通过组合多个标志来设置不同的解析规则。例如,AND标志表示查询字符串中的词项之间默认使用AND逻辑连接;OR标志表示默认使用OR逻辑连接;PHRASE标志表示将整个查询字符串当作一个短语来处理等。
    • analyzer:用于指定分析器。分析器会对query参数中的字符串进行分词、词干提取、停用词处理等操作。如果不指定,Elasticsearch 会使用默认的分析器来处理查询字符串。
  • 示例代码:
    • 在文章标题和内容中查找包含 “机器学习” 相关内容。
    • import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
      SimpleQueryStringQuery simpleQueryStringQuery = SimpleQueryStringQuery.of(q -> q.query("机器学习").fields("article_title", "article_content"));
      Query query = simpleQueryStringQuery._toQuery();
      

下一篇:《Elasticsearch Java Api Client中DSL语句的查询方法汇总(二)》

相关文章:

Elasticsearch Java Api Client中DSL语句的查询方法汇总

说明&#xff1a;示例代码依赖的是co.elastic.clients:elasticsearch-java:8.16.1。 1、termQuery 方法 用途&#xff1a;用于精确匹配某个字段的完全相等的值。这在查询如文档的 ID、状态码等具有明确取值的字段时非常有用。参数说明&#xff1a; field&#xff1a;这是一个…...

Linux之远程登录

一、使用ssh命令登录 winR打开cmd输入命令 # root是命令&#xff0c;192.168.101.200是地址 ssh root192.168.101.200是否要保存密码&#xff0c;就是yes以后可以免密登录&#xff0c;这里就yes了 输入密码&#xff0c;就登录成功了 操作完成之后&#xff0c;输入命令退出 e…...

医学图像分割数据集腹部肝脏多器官图像分割数据集labelme格式860张10类别

数据集格式&#xff1a;labelme格式(不包含mask文件&#xff0c;仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数)&#xff1a;860 标注数量(json文件个数)&#xff1a;860 标注类别数&#xff1a;10 标注类别名称:["liver","stomach","o…...

Xerces-C,一个成熟的 C++ XML 解析库!

嗨&#xff0c;大家好&#xff01;我是一行。今天咱们来探索 Xerces-C&#xff0c;它可是 C里超棒的 XML 解析库哦&#xff01;能帮咱轻松处理 XML 数据&#xff0c;在很多数据交互、配置文件读取场景都超实用&#xff0c;快来一起学习使用它的妙招吧。 一、Xerces-C 是什么&am…...

go语言中context的用法

0 概述 Context 是 Go 语言中非常重要的一个概念&#xff0c;它主要用于跨多个函数或 goroutine 传递 取消信号、超时控制、截止时间 和 请求范围数据。在并发编程中&#xff0c;Context 提供了更好的控制和管理&#xff0c;尤其是当你需要在多个 goroutine 之间传递状态或进行…...

UE5编辑器下将RenderTarget输出为UTexture并保存

在使用UE5开发项目时&#xff0c;RenderTarget是一种非常强大的工具&#xff0c;常用于生成实时纹理效果、后处理和调试。而将RenderTarget的内容转换为UTexture并储存&#xff0c;是许多编辑器内的需求都需要的功能。 1.材质球输出至Texture 首先创建一个Actor类&#xff0c…...

探秘 AI Agent 之 Coze 智能体:从简介到搭建全攻略(4/30)

一、Coze 智能体概述 &#xff08;一&#xff09;Coze 智能体是什么 Coze 智能体是基于机器学习和自然语言处理技术的软件实体&#xff0c;它在人工智能领域扮演着重要的角色&#xff0c;能够像一个智能助手一样&#xff0c;通过与外界环境进行交互学习&#xff0c;进而执行各…...

解决navicat 导出excel数字为科学计数法问题

一、原因分析 用程序导出的csv文件&#xff0c;当字段中有比较长的数字字段存在时&#xff0c;在用excel软件查看csv文件时就会变成科学技术法的表现形式。 其实这个问题跟用什么语言导出csv文件没有关系。Excel显示数字时&#xff0c;如果数字大于12位&#xff0c;它会自动转化…...

蓝桥杯刷题——day4

蓝桥杯刷题——day4 题目一题干题目解析代码 题目二题干题目解析代码 题目一 题干 小蓝和朋友们在玩一个报数游戏。由于今年是2024 年&#xff0c;他们决定要从小到大轮流报出是20或24倍数的正整数。前10个被报出的数是&#xff1a;20,24,40,48,60,72,80,96,100,120。请问第2…...

【AI日记】24.12.13 kaggle 比赛 2-3 大扫除、断舍离、自己做饭

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 工作 参加&#xff1a;kaggle 比赛 Regression with an Insurance Dataset参考&#xff1a;kaggle 回归类入门比赛 House Prices - Advanced Regression Techniques内容&#xff1a;构建自己的EDA&#xff08…...

http 和 https 的区别?

HTTP (HyperText Transfer Protocol) 和 HTTPS (HyperText Transfer Protocol Secure) 是两种用于在 Web 浏览器和网站服务器之间传输网页的协议&#xff0c;它们的主要区别在于安全性。以下是 HTTP 和 HTTPS 的一些关键区别&#xff1a; 安全性&#xff1a; HTTP&#xff1a;H…...

Mysql数据库中,什么情况下设置了索引但无法使用?

在MySQL数据库中&#xff0c;即使已经正确设置了索引&#xff0c;但在某些情况下索引可能无法被使用。 以下是一些常见的情况&#xff1a; 1. 数据分布不均匀 当某个列的数据分布非常不均匀时&#xff0c;索引可能无法有效地过滤掉大部分的数据&#xff0c;导致索引失效。 …...

[Unity] AppLovin Max接入Native 广告 Android篇

把下载下来的maxnativelibrary-release-文件放在Plugins/Android下 将这一行加入到mainTemplate.gradle文件中 implementation androidx.constraintlayout:constraintlayout:2.1.4添加下面的两个脚本 using System; using System.Collections; using System.Collections.Gener…...

青少年夏令营管理系统的设计与开发(社团)+开题报告(springboot+freemarker)

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…...

JSSIP的使用及问题(webRTC,WebSockets)

简介 项目中有一个需要拨打电话的功能&#xff0c;要求实时的进行音频接听&#xff0c;并且可以在电话接听或者挂断等情况下做出相应的操作。jssip作为一个强大的实现实时通信的javascript库&#xff0c;这不门当户对了嘛。 jssip&#xff08;官网&#xff1a; JsSIP - the J…...

13.继承和多态的实例 C#

这是一个动物园的动物发出不同的声音&#xff0c;使用了继承和多态 using System; using System.Collections.Generic;namespace InheritanceAndPolymorphismExample {//一个动物类&#xff0c;包含属性&#xff1a;名称。包含方法&#xff1a;发出叫声public class Animal{pub…...

Vue3之入门介绍

Vue 3是一种用于构建用户界面的渐进式JavaScript框架。它主要用于创建单页应用(SPA)&#xff0c;具备响应式数据绑定、组件化开发、虚拟DOM等核心特性&#xff0c;使得开发者能够高效地构建复杂的前端应用。Vue 3相比于之前的版本&#xff0c;进行了大量的性能优化和功能改进&a…...

Unity3D仿星露谷物语开发3之动画系统初探

1、目标 我们希望使用已有的资源建一个动画demo&#xff0c;以此熟悉基于已有Animator/Animation资源的使用方法。 以Tree的动画系统为例&#xff0c;资源位于&#xff1a; 2、创建流程 &#xff08;1&#xff09;创建tree空对象 上面两个都是空对象。 &#xff08;2&#…...

【研发经验】工作流和规则引擎的应用与场景

工作流引擎和规则引擎是两种常见的软件技术&#xff0c;可以被应用于各种场景中&#xff0c; 例如&#xff1a; 业务流程自动化&#xff1a;工作流引擎可以用于自动化和管理各种业务流程&#xff0c;例如审批流程&#xff0c;订单处理流程&#xff0c;客户服务流程等。它可以定…...

UDP对比TCP的网络编程接口

目录 一、UDP网络编程接口 1.创建套接字(客户端、服务端) 2.套接字绑定地址(客户端、服务端) 3.发送数据(客户端、服务端) 4.接收数据(客户端、服务端) 二、TCP网络编程接口 1.创建套接字&#xff08;客户端、服务端&#xff09; 2.套接字绑定地址&#xff08;客户端、服…...

C# 探险之旅:第二十七节 - 类型class(属性) —— 给你的类穿上“属性”的外衣

嘿&#xff0c;探险家们&#xff01;欢迎再次踏上我们的C#奇幻之旅。今天&#xff0c;我们要聊聊一个超级有趣的话题——类的“属性”。想象一下&#xff0c;如果我们要给类穿上一件酷炫的外衣&#xff0c;那属性就是这件外衣上的各种口袋和装饰&#xff0c;让类变得既实用又拉…...

《饕餮记》精彩片段(一)

也是无意中看到鲛人脍单元集片段&#xff0c;才去看了这个剧 整体略架空和部分逻辑不是很连贯和完美 精彩点不在于整体和走向和故事线 也不在于大牌明星撑场&#xff0c;因为全场只有安悦溪一个脸熟明星撑场子 而在于每个单元间离奇小故事 和华胥引差不多&#xff0c;属于逻…...

esxi8 虚拟机使用ubuntu22模板后 没有ip配置文件,只有ipv6链接正常使用

esxi8 虚拟机使用模板后 没有ip配置文件&#xff0c;只有ipv6链接正常使用&#xff0c;/etc/NetworkManager/system-connections配置下没有配置文件 只有/etc/netplan/有文件 sudo ip addr add 192.168.1.9/24 dev ens35 # 临时设置ip&#xff0c; 接口名ens35 sudo vi /et…...

C++内存管理

1、代码区 代码区的特点&#xff1a; 1.只读&#xff1a;防止程序运行时修改其执行代码&#xff0c;有助于程序稳定和安全性。 2.共享&#xff1a;多个程序运行可共享同一份代码区&#xff0c;以节省内存。 3.固定大小&#xff1a;代码区的大小在程序编译连接时就已经确定&a…...

分类算法评估标准综述

目录 ​编辑 混淆矩阵&#xff08;Confusion Matrix&#xff09; 准确率&#xff08;Accuracy&#xff09; 精确率&#xff08;Precision&#xff09; 召回率&#xff08;Recall&#xff09; F1分数&#xff08;F1 Score&#xff09; ROC曲线和AUC值 P-R曲线 马修斯相…...

基于windows环境使用nvm安装多版本nodejs

目录 前言 一、卸载node 二、nvm是什么&#xff1f; 三、nvm安装 1.官网下载 nvm 包 2. 安装nvm-setup.exe 3. 配置路径和下载镜像 4. 检查安装是否完成 四、 使用nvm安装node 五、修改npm默认镜像源为淘宝镜像 六、环境变量配置 1. 新建目录 2. 设置环境变量 七…...

【人工智能-中级】神经网络的调优与正则化策略

文章目录 神经网络的调优与正则化策略1. 神经网络调优策略学习率调整批量大小(Batch Size)优化算法2. 正则化策略L1与L2正则化Dropout数据增强3. 超参数优化4. 小结神经网络的调优与正则化策略 在深度学习中,训练一个高效且准确的神经网络模型不仅依赖于选择合适的架构,还…...

VBA 连续打印多个内容成PDF

VBA 连续打印多个内容成PDF Dim wb As Workbook Dim sht1 As Worksheet Set sht1 ActiveSheet PT ThisWorkbook.PathApplication.ScreenUpdating FalseApplication.DisplayAlerts FalseApplication.Calculation xlCalculationManual For i [aa2] To [ab2][ad2] iSet wb …...

【Linux网络编程】第十弹---打造初级网络计算器:从协议设计到服务实现

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】【Linux网络编程】 目录 1、Protocol.hpp 1.1、Request类 1.1.1、基本结构 1.1.2、构造析构函数 1.1.3、序列化函数 1.1.4、反…...

嵌入式 linux Git常用命令 抽补丁 打补丁

Git常用命令 为什么要学习git呢&#xff1f;我相信刚入门的小伙伴敲打肯定碰到过这种玄学问题&#xff0c;我明明刚刚还能用的代码&#xff0c;后面不知道咋的就不能用了&#xff0c;所以每次你调出一个功能点以后都会手动复制一份代码防止出问题&#xff0c;时间一长发现整个…...

windows C#-方法概述(上)

方法是包含一系列语句的代码块。 程序通过调用该方法并指定任何所需的方法参数使语句得以执行。 在 C# 中&#xff0c;每个执行的指令均在方法的上下文中执行。 Main 方法是每个 C# 应用程序的入口点&#xff0c;并在启动程序时由公共语言运行时 (CLR) 调用。 在使用顶级语句的…...

SpringCloud和Nacos的基础知识和使用

1.什么是SpringCloud ​ 什么是微服务&#xff1f; ​ 假如我们需要搭建一个网上购物系统&#xff0c;那么我们需要哪些功能呢&#xff1f;商品中心、订单中心和客户中心等。 ​ 当业务功能较少时&#xff0c;我们可以把这些功能塞到一个SpringBoot项目中来进行管理。但是随…...

一行一行出字的视频怎么做?简单的操作方法

在视频制作中&#xff0c;逐行出现的字幕效果不仅能够增强视觉冲击力&#xff0c;还能让观众更加专注于内容&#xff0c;特别适合用于教育视频、书单推荐、诗歌朗诵等多种场景。下面&#xff0c;我们将详细介绍如何影忆&#xff0c;来制作这种逐行出字的视频效果。 1.字幕逐行…...

鸿蒙NEXT开发案例:颜文字搜索器

【引言】 本文将介绍一个名为“颜文字搜索器”的开发案例&#xff0c;该应用是基于鸿蒙NEXT平台构建的&#xff0c;旨在帮助用户快速查找和使用各种风格的表情符号。通过本案例的学习&#xff0c;读者可以了解如何在鸿蒙平台上进行数据处理、UI设计以及交互逻辑的实现。 【环…...

python在纯文本程序里面藏一张图

思路base64编码是纯文本的,base64是以字符串的形式存在,包括但不限于python,js,C#,C/Cpp. 这里给出python示例:运行后可以显示一张opencv的官方例程图. 废话不说,上程序. import os,sys,time,cv2,base64,requests from PIL import Image from io import BytesIO import nump…...

Java 身份证校验工具类(15位校验、18位校验与15转18)

文章目录 身份证简介&#xff08;一&#xff09;身份证号码的组成&#xff08;二&#xff09;一代和二代身份证一代身份证二代身份证 检验思路分析&#xff08;一&#xff09;15位身份证号码&#xff08;二&#xff09;18位身份证号码&#xff08;三&#xff09;校验算法示例&a…...

The Past, Present and Future of Apache Flink

摘要&#xff1a;本文整理自阿里云开源大数据负责人王峰&#xff08;莫问&#xff09;在 Flink Forward Asia 2024上海站主论坛开场的分享&#xff0c;今年正值Flink开源项目诞生的第10周年&#xff0c;借此时机&#xff0c;王峰回顾了Flink在过去10年的发展历程以及 Flink社区…...

不能通过 ip 直接访问 共享盘 解决方法

from base_config.config import OpenSMB, SMB import os, time, calendar, requests, decimal, platform, fs.smbfsinfo_dict SMB.EPDI_dict info_dict[host] (FS03,10.6.12.182) info_dict[direct_tcp] True# smb OpenSMB(info_dict)print(ok)# 根据 ip 查询电脑名 impor…...

IDEA方法注释模板设置

目录 创建模板 新建模板&#xff1a;命名为* 设置模板内容-IDEA格式模板 设置模板应用场景 设置参数 创建模板 /**Enter这里我们也按照这种习惯来设置IDEA的方法注释&#xff1a;File-->Settings-->Editor-->Live Templates 先新建模板组&#xff0c;然后在模板组中…...

组件缓存keep-alive

希望点击面经详情回来之后该1面经详情停留在滚动条停止的位置 有些 组件是不需要缓存的&#xff0c;例如详情页不需要缓存。解决方法是keep-alive的三个属性 include:组件名数组&#xff0c;只有匹配的组件会被缓存exclude:组件名数组&#xff0c;任何匹配的组件都不会被缓存ma…...

【经验分享】搭建本地训练环境知识点及方法

最近忙于备考没关注&#xff0c;有次点进某小黄鱼发现首页出现了我的笔记还被人收费了 虽然我也卖了一些资源&#xff0c;但我以交流、交换为主&#xff0c;笔记都是免费给别人看的 由于当时刚刚接触写的并不成熟&#xff0c;为了避免更多人花没必要的钱&#xff0c;所以决定公…...

Ant Design of Vue之带select控件,单元格编辑功能的表格EditableCell组件

效果图 功能 表格里面某一行或者某一个单元格支持select复选框可以编辑&#xff0c;新增一行数据&#xff0c;删除一行数据&#xff0c;并且有校验规则 源码 editablecell组件源码 参考自 源码...

etcd节点扩/缩容

etcd集群节点数越多越好吗&#xff1f; etcd 集群是一个 Raft Group&#xff0c;没有 shared。所以它的极限有两部分&#xff0c;一是单机的容量限制&#xff0c;内存和磁盘&#xff1b;二是网络开销&#xff0c;每次 Raft 操作需要所有节点参与&#xff0c;每一次写操作需要集…...

FFmpeg功能使用

步骤&#xff1a;1&#xff0c;安装FFmpeg Download FFmpeg 在这里点击->Windows builds from gyan.dev&#xff1b;如下图 会跳到另外的下载界面&#xff1a; 在里面下拉选择点击ffmpeg-7.1-essentials_build.zip&#xff1a; 即可下载到FFmpeg&#xff1b; 使用&#…...

动手学深度学习-线性神经网络-7softmax回归的简洁实现

目录 初始化模型参数 重新审视Softmax的实现 优化算法 训练 小结 在 线性回归的实现中&#xff0c; 我们发现通过深度学习框架的高级API能够使实现 线性回归变得更加容易。 同样&#xff0c;通过深度学习框架的高级API也能更方便地实现softmax回归模型。 本节如在上一节…...

GenAI + 3D:开启4D场景重建的新纪元

近日,一项激动人心的研究成果在《GenAI + 3D》方向取得了重大进展,它提出了一种创新的方法,能够将普通的2D视频转换为完整的4D场景。想象一下,《黑客帝国》中的"子弹时间"效果——现在你不仅可以停留在一个特定的时刻来改变视角,还可以自由地在空间和时间中移动…...

记一个framebuffer显示混乱的低级错误

记一个framebuffer显示混乱的低级错误 由于framebuffer的基础知识不扎实&#xff0c;这个任务上我多卡了两天&#xff0c;差点把我搞死&#xff0c;于此记录为后鉴。 打算用awtk做一个多进程项目&#xff0c;计划把framebuffer的内容通过websocket输出到浏览器上去显示画面, …...

网络安全教学博客(二):常见网络安全威胁剖析

在上一篇博客中&#xff0c;我们了解了网络安全的基础概念和重要性。今天&#xff0c;让我们深入探讨一下常见的网络安全威胁&#xff0c;以便我们能够更好地识别和防范它们。 恶意软件&#xff08;Malware&#xff09; 病毒&#xff08;Virus&#xff09;&#xff1a;病毒是一…...

【ZYNQ开发】Vitis下保存与快速加载BSP配置的方法

在使用Xilinx的Vitis进行ZYNQ PS端开发时&#xff0c;常常涉及到对于BSP的设置&#xff0c;比较典型的像是使用lwip时&#xff0c;需要对DHCP、memory以及send_buffer等进行一些自定义的修改。在设计到硬件描述文件需要进行更换&#xff08;PL端更改程序&#xff09;重新加载工…...

go开发中interface和方法接收器的使用

Go 语言中的接口和方法接收器学习 Go 中的 interface 就像是一个神奇的魔法杖&#xff0c;能让你轻松地将不同的类型拉到同一个阵营里。与其他语言的接口不同&#xff0c;Go 的接口无需显式声明“我实现了你”&#xff0c;只要你满足了接口规定的方法&#xff0c;Go 就会自动认…...