ToB企服应用市场:ToB评测及商务社交产业平台

标题: java与es8实战之三:Java API Client有关的知识点串讲 [打印本页]

作者: 麻花痒    时间: 2023-9-2 01:04
标题: java与es8实战之三:Java API Client有关的知识点串讲
欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
本篇概览


命名空间

  1. ElasticsearchClient client = ...
  2. client.indices().create(c -> c.index("products"));
复制代码
命名规则

五种对象

集合不会为空

  1. NodeStatistics stats = NodeStatistics.of(b -> b
  2.     .total(1)
  3.     .failed(0)
  4.     .successful(1)
  5. );
  6. // The `failures` list was not provided.
  7. // - it's not null
  8. assertNotNull(stats.failures());
复制代码
  1.         private NodeStatistics(Builder builder) {
  2.                 this.failures = ApiTypeHelper.unmodifiable(builder.failures);
  3.                 this.total = ApiTypeHelper.requireNonNull(builder.total, this, "total");
  4.                 this.successful = ApiTypeHelper.requireNonNull(builder.successful, this, "successful");
  5.                 this.failed = ApiTypeHelper.requireNonNull(builder.failed, this, "failed");
  6.         }
复制代码
  1.     public static <T> List<T> unmodifiable(@Nullable List<T> list) {
  2.         if (list == null) {
  3.             return undefinedList();
  4.         }
  5.         if (list == UNDEFINED_LIST) {
  6.             return list;
  7.         }
  8.         return Collections.unmodifiableList(list);
  9.     }
复制代码
variant type

  1. {
  2.   "query":{"term":{ "interests":"youyong"}}
  3. }
复制代码
  1. {
  2.   "query":{"match":{"interests": "changge"}}
  3. }
复制代码
  1. {
  2.   "query": {
  3.     "intervals" : {
  4.       "my_text" : {
  5.         "all_of" : {
  6.           "ordered" : false,
  7.           "intervals" : [
  8.             {
  9.               "match" : {
  10.                 "query" : "my favorite books",
  11.                 "max_gaps" : 0,
  12.                 "ordered" : true
  13.               }
  14.             },
  15.             {
  16.               "any_of" : {
  17.                 "intervals" : [
  18.                   { "match" : { "query" : "java tutorials" } },
  19.                   { "match" : { "query" : "cold porridge" } }
  20.                 ]
  21.               }
  22.             }
  23.           ]
  24.         }
  25.       }
  26.     }
  27.   }
  28. }
复制代码
  1. Query query = new Query.Builder()
  2.     .term(t -> t                          
  3.         .field("name")                    
  4.         .value(v -> v.stringValue("foo"))
  5.     )
  6.     .build();  
复制代码
  1. query.term().value().stringValue()
复制代码
  1. switch(query._kind()) {
  2.     case Term:
  3.         doSomething(query.term());
  4.         break;
  5.     case Intervals:
  6.         doSomething(query.intervals());
  7.         break;
  8.     default:
  9.         doSomething(query._kind(), query._get());
  10. }
复制代码
通过JSON字符串创建API对象

  1. InputStream input = this.getClass()
  2.     .getResourceAsStream("some-index.json");
  3. CreateIndexRequest req = CreateIndexRequest.of(b -> b
  4.     .index("some-index")
  5.     .withJson(input)
  6. );
  7. boolean created = client.indices().create(req).acknowledged();
复制代码
  1. Reader queryJson = new StringReader(
  2.     "{" +
  3.     "  "query": {" +
  4.     "    "range": {" +
  5.     "      "@timestamp": {" +
  6.     "        "gt": "now-1w"" +
  7.     "      }" +
  8.     "    }" +
  9.     "  }," +
  10.     "  "size": 100" +
  11.     "}");
  12. Reader aggregationJson = new StringReader(
  13.     "{" +
  14.     "  "size": 0, " +
  15.     "  "aggregations": {" +
  16.     "    "hours": {" +
  17.     "      "date_histogram": {" +
  18.     "        "field": "@timestamp"," +
  19.     "        "interval": "hour"" +
  20.     "      }," +
  21.     "      "aggregations": {" +
  22.     "        "max-cpu": {" +
  23.     "          "max": {" +
  24.     "            "field": "host.cpu.usage"" +
  25.     "          }" +
  26.     "        }" +
  27.     "      }" +
  28.     "    }" +
  29.     "  }" +
  30.     "}");
  31. SearchRequest aggRequest = SearchRequest.of(b -> b
  32.     .withJson(queryJson)
  33.     .withJson(aggregationJson)
  34.     .ignoreUnavailable(true)
  35. );
  36. Map<String, Aggregate> aggs = client
  37.     .search(aggRequest, Void.class)
  38.     .aggregations();
复制代码
关于异常


欢迎关注博客园:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4