常用 API

1.获取集群设置

使用 Java Low Level REST Client

 public final RestClient restClient = RestClient
            .builder(new HttpHost("172.18.90.40", 9200, "http"))
            .build();

    @Test
    public void search() throws IOException {
        Map<String, String> params = Collections.emptyMap();

        String queryString = "{" +
                "  \"size\": 20," +
                "  \"query\": {" +
                "   \"range\": {" +
                "     \"createTime\": {" +
                "       \"gte\": \"2018-06-01 00:00:00\"" +
                "     }" +
                "   }" +
                "  }" +
                "}";

        HttpEntity entity = new NStringEntity(queryString, ContentType.APPLICATION_JSON);

        try {

        Response response = restClient.performRequest("GET", "/some_important_index*/_search", params, entity);
        System.out.println(response.getStatusLine().getStatusCode());
        String responseBody = null;

        responseBody = EntityUtils.toString(response.getEntity());
        System.out.println("******************************************** ");

        JSONObject jsonObject = JSON.parseObject(responseBody);


        System.out.println(jsonObject.get("hits"));
        }catch (ResponseException e){
            e.printStackTrace();
        }
        System.out.println("23333");
        
    }

2.常用rest请求

  • term 精确查找,匹配多个值 terms

    {
      "query": {
        "term": {
          "FIELD": {
            "value": "VALUE"
          }
        }
      }
    }
    
    // 多个值
    {
      "query": {
        "terms": {
          "FIELD": [
            "VALUE1",
            "VALUE2"
          ]
        }
      }
    }
    
  • nested类型字段,每个path要一层层点下去

    {
        "query": {
            "bool": {
                "must": [{
                        "nested": {
                            "path": "relations",
                            "query": {
                                "term": {
                                    "relations.relationTypeName": {
                                        "value": "运行于"
                                    }
                                }
                            }
                        }
                    }, {
                        "nested": {
                            "path": "relations",
                            "query": {
                                "nested": {
                                    "path": "relations.instances",
                                    "query": {
                                        "term": {
                                            "relations.instances.instanceName": {
                                                "value": "APPID_mcrm-zuul-core"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }, {
                        "bool": {
                            "should": [{
                                    "query_string": {
                                        "default_field": "resourceType.resourceTypeCode",
                                        "query": "mo*"
                                    }
                                }, {
                                    "term": {
                                        "resourceType.resourceTypeCode": {
                                            "value": "container"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                ]
            }
        }
    }
    
    

    对应 hightlevelclient

    BoolQueryBuilder instanceQueryBuilder = QueryBuilders.boolQuery();
    instanceQueryBuilder.must(QueryBuilders.nestedQuery("relations", QueryBuilders.termQuery("relations.relationTypeName", "归属于"), ScoreMode.None));
    instanceQueryBuilder.must(QueryBuilders.nestedQuery("relations", QueryBuilders.nestedQuery("relations.instances", QueryBuilders.termQuery("relations.instances.instanceName", appId), ScoreMode.None), ScoreMode.None));
    
上次更新时间: 2024/5/7 05:59:02