elasticsearch7实战(三)——通用选项

前言

在正式开始讲ES的查询语句之前,想先说一些有用的参数。这些参数并不是查询的核心,但是可以让查询结果更加符合用户需要。
这里讲的参数打都既可以放到url中作为url参数,也可以在发送post请求的时候作为post请求的请求体的一部分。

通用选项

1.格式化输出

格式化输出指让es的返回结果更具有可读性。主要有两个pretty=truev

  • http://{{ _.es_url }}/_cat/indices?v在url参数添加一个v字母可以让输出结果带有表头。比如上一节在讲es元信息查询的时候,可以看到一般都有带v字母参数,就是为了让返回结果有表头
  • http://{{ _.es_url }}/zhy-detect-2021*/_search?pretty=true。pretty参数是为了让返回的json字符串能更加可读。

2. 展平配置信息

flat_settings=true参数可以让配置信息展平,而不是一层套一层的json对象。这个参数也只有对配置信息有用,对普通返回结果没有用。
如,查询配置api:http://{{ _.es_url }}/test-20201127/_settings?flat_settings=true
返回结果如下:

{
  "test-20201127": {
    "settings": {
      "index.codec": "best_compression",
      "index.creation_date": "1606406411188",
      "index.lifecycle.name": "test-dd",
      "index.mapping.total_fields.limit": "10000",
      "index.merge.policy.max_merged_segment": "128m",
      "index.number_of_replicas": "1",
      "index.number_of_shards": "2",
      "index.priority": "0",
      "index.provided_name": "test-20201127",
      "index.refresh_interval": "1h",
      "index.routing.allocation.total_shards_per_node": "2",
      "index.translog.flush_threshold_size": "1g",
      "index.uuid": "lgc28_OzT6qiJjDp9r5KNA",
      "index.version.created": "7090399"
    }
  }
}

3.返回信息过滤

在进行es查询的时候会返回很多信息,如果用惯了SQL,会发现ES咋返回这么多无用的数据呢,如果觉得有些数据无用,可以将其过滤掉,使用filter_path字段,如http://{{ _.es_url }}/test-20201220/_search?filter_path=-**.blob,-**.blob1
使用该字段过滤的时候需要注意以下细节:

  • 他的过滤是可以有层级的。比如如果只要返回hits字段,可以写filter_path=hits,如果需要返回hits字段中的hits,可以写filter_path=hits.hits,即通过点(.)的方式指定返回层级。
  • 如果hits返回的是一个数组,数组中每个元素还有_source字段,还可以指定filter_path=hits.hits._source。这样返回的数组的对象只包含_source字段。
  • 如果指定的过滤字段不存在不会报错,而是返回一个空对象(这很容易理解)
  • 如果需要指定过滤多个字段,多个字段直接用逗号(,)分割,就像:filter_path=hits.hits,took还可以通过通配符匹配字段,比如要匹配hits字段下任意字段下的_source字段,可以使用<filter_path=hits.*._source>来匹配
  • 如果是两个*,即**,可以匹配任意深度的路径,比如还是要查询_source字段,但是这次不知道他的具体父路径,可以使用<filter_path=**._source>来匹配
  • 上面说的所有情况都是过滤要留下的字段,而不是排除的字段。如果要排除字段,上面所有规则依然生效,只是在要排除的字段前面加一个减号(-),比如要排除任意深度下的_source子字段只需要写<filter_path=-**._source>即可,注意,前面是有减号的,没有减号表示只保留这个字段。
上一篇:SpringBoot整合Elasticsearch+ik分词器+kibana


下一篇:Vmstat命令详解