环境:阿里云ElasticSearch6.7
需求:返回查询结果的指定字段,并不需要所有字段

  1. 在_source字段中直接指定需要返回的字段
GET /ads_lading_trade_brief_es_v2/_search
{
  "_source": [
    "trade_id",
    "country",
    "importer_clean_name"
  ]
}
  1. 也可以在_source字段中执行需要保留的字段和需要过滤的字段,如下所示,其中includes代表需要返回的字段,excludes代表不要返回的字段
GET /ads_lading_trade_brief_es_v2/_search
{
  "_source": {
    "includes": [
      "trade_id",
      "country",
      "importer_clean_name"
    ],
    "excludes": [
      "exporter_clean_name"
    ]
  }
}
  1. 拓展
    如果你需要对命中的结果进行一定的运算后再返回,则可以利用script进行
GET /bank/_search
{
  "query": {
    "match_all": {}
  },
  "script_fields": {
    "test1": {
      "script": {
        "lang": "painless",
        "source": "doc['balance'].value * 2"
      }
    },
    "test2": {
      "script": {
        "lang": "painless",
         <!--  doc指文档-->
        "source": "doc['age'].value * params.factor",
        "params": {
          "factor": 2
        }
      }
    }
  }
}

拓展2:说明: params _source 取 _source字段值

官方推荐使用doc,理由是用doc效率比取_source 高

GET /bank/_search
{
  "query": {
    "match_all": {}
  },
  "script_fields": {
    "ffx": {
      "script": {
        "lang": "painless",
        "source": "doc['age'].value * doc['balance'].value"
      }
    },
    "balance*2": {
      "script": {
        "lang": "painless",
        "source": "params['_source'].balance*2"
      }
    }
  }
}

参考文章:https://www.cnblogs.com/tjp40922/p/12897996.html

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐