ES indicesoptions查询参数

1,732 阅读1分钟

1 ignore_unavailable 是否忽略不可用的索引

2 allow_no_indices 当没有可用的索引时,是否正常

3 expand_wildcards 统配的对象,是open的索引,还是closed的索引

这几个参数都可以在url参数中设置。

1.ES的client全局变量

private TransportClient client;

获取count总数

resp.getAggregations()

查询条件拼接:

  1. BoolQueryBuilder b = QueryBuilders.boolQuery();
  2. b.must(QueryBuilders.rangeQuery(ISSAConsts.LEVEL).lt(5))
must:分数评估查询字符串,filter:查询id,一般先filter过滤再must查询
  1. b.must(QueryBuilders.termQuery(ISSAConsts.DST_CITY, cityId));
  2. b.filter(QueryBuilders.rangeQuery(ISSAConsts.LEVEL).lt(5));
  3. 聚合查询,level分类
 AggregationBuilder aggregation = AggregationBuilders
                        .terms(ISSAConsts.LEVEL).field(ISSAConsts.LEVEL)
                        .size(10)
                        .subAggregation(AggregationBuilders.count(ISSAConsts.TOTAL).field(ISSAConsts.TIMESTAMP));
  1. 结果统计

                AggregationBuilder aggregation = AggregationBuilders
                        //group by level
                        //select level
                        .terms(ISSAConsts.LEVEL).field(ISSAConsts.LEVEL)
                        //limit 10
                        .size(10)
                        //统计total字段的数量,timestamp
                        .subAggregation(AggregationBuilders.count(ISSAConsts.TOTAL).field(ISSAConsts.TIMESTAMP));

                SearchResponse resp = client.prepareSearch(ISSAConsts.EVENT_INDEX + sdf.format(dt))
                        .setTypes(ISSAConsts.EVENT)
                        .setIndicesOptions(IndicesOptions.fromOptions(true, true, false, false))
                        .setQuery(b)
                        .addAggregation(aggregation)
                        .setSize(0)
                        .execute()
                        .actionGet();

Q1:为什么不b.must b.should b.should ,

should类似or,must会不起作用,存疑。

8. resp.getAggregations()

   if (resp.getAggregations() != null) {
                    Terms genders = resp.getAggregations().get(ISSAConsts.LEVEL);
                    if (genders != null) {
                        for (Terms.Bucket entry : genders.getBuckets()) {
                            int levelId = Integer.valueOf(entry.getKey().toString());

                            Map<String, Aggregation> m = entry.getAggregations().asMap();
                            double sum = ((ValueCount) m.get(ISSAConsts.TOTAL)).getValue();
                            total += sum;
                            map.put(levelId, Double.valueOf(sum).longValue());
                        }
                    }
                }

跨平台路径兼容性:

private static final String ABSOLUTE_PATH = System.getProperty("user.dir") + File.separator
            + "resources" + File.separator;

简写:

eq相等   ne、neq不相等,   gt大于, 
lt小于 gte、ge大于等于   lte、le 小于等于 
not非   mod求模   
is [not] div by是否能被某数整除   is [not] even是否为偶数   
is [not] even by $b即($a / $b) % 2 == 0   is [not] odd是否为奇  
is not odd by $b即($a / $b) % 2 != 0