elasticsearch5.4.0 查询记录

来源:互联网 发布:r语言和c语言哪个难 编辑:程序博客网 时间:2024/06/05 10:03

题记 草稿记录法

通过TransportClient得到 client 客户端

SearchRequestBuilder searchrequestbuilder = clinet.prepareSearch(indexName);

构造查询query

主要是通过QueryBuilders 类进行获取query

eg:

1,简单查询

MatchQueryBuilder matchquery = QueryBuilders.matchQuery("fieldName","输入值");  获取关键字查询单个字段的query

//MatchQueryBuilder query1 = QueryBuilders.matchQuery("brandCode", "1266");  查询brandCode 值为1266的query


2,复杂查询:

BoolQueryBuilder booleanQuery = QueryBuilders.boolQuery();

booleanQuery.should(query1);  或的关系

booleanQuery.must(query2);   与的关系


3,范围查询

RangeQueryBuilder timeQuery = QueryBuilders.rangeQuery("fieldName").gte(“输入值1”).lte("输入值2");

查询fieldName 在 范围 : 输入值1<=fieldName<=输入值2

可对 数字 、价格、时间等有范围的进行使用。


4,设置查询query 与 设置查询分页

searchRequestBuilder .setFrom(size) //从size开始

                                   .setSize(size2) //取size2条数据

                                  .setQuery(booleanQuery) //设置查询query

                                  .get();

5,得到结果

 SearchResponse response

SearchHits hits = response.getHits();

hits.getTotalHits();获取到查询总数

hit.getSourceAsMap(); 得到结果


-------------------------------------------------------------es的json语法-------------------------------------------------------------------------------

查询所有文档

GET xiu/selection/_search
{
  "query": {
    "match_all": {}
  }
}

单个字段查询

GET xiu/selection/_search
{
  "query": {
    "match": {
      "brandCode": "IT0051"
    }
  }
}

多个字段进行查询

GET xiu/selection/_search
{
  "query": {
    "multi_match": {
      "query": "IT0389",
      "fields": ["brandCode","brandChName"]
    }
  }
}

指定返回值 _source=taxFreePrice

GET xiu/selection/_search?_source=taxFreePrice
{
  "query": {
    "term": {
      "brandCode": {
        "value": "IT0389"
      }
    }
  }
}

区间范围查询

GET xiu/selection/_search
{
  "query": {
    "range": {
      "createTime": {
        "format": "yyyy-MM-dd HH:mm:ss",
        "gte": "2017-05-10 00:00:00",
        "lte": "2017-09-10 00:00:00"
      }
    }
  }
}

复杂查询

curl -XGET "http://localhost:9200/xiu/selection/_search?_source=brandCode,onsaleState" -H 'Content-Type: application/json' -d'
{
  "query": {
    "bool": {
      "must": [
        {
          "bool": {
            "should": [
              {
                "match": {
                  "brandCode": {
                    "query": "IT0089",
                    "operator": "OR",
                    "prefix_length": 0,
                    "max_expansions": 50,
                    "fuzzy_transpositions": true,
                    "lenient": false,
                    "zero_terms_query": "NONE",
                    "boost": 1
                  }
                }
              },
              {
                "match": {
                  "brandCode": {
                    "query": "IT0927",
                    "operator": "OR",
                    "prefix_length": 0,
                    "max_expansions": 50,
                    "fuzzy_transpositions": true,
                    "lenient": false,
                    "zero_terms_query": "NONE",
                    "boost": 1
                  }
                }
              }
            ],
            "disable_coord": false,
            "adjust_pure_negative": true,
            "boost": 1
          }
        },
        {
          "match": {
            "onsaleState": {
              "query": 1,
              "operator": "OR",
              "prefix_length": 0,
              "max_expansions": 50,
              "fuzzy_transpositions": true,
              "lenient": false,
              "zero_terms_query": "NONE",
              "boost": 1
            }
          }
        }
      ]
    }
  }
}'