elasticsearch 是否有可能在响应中获得ElasticSearch请求数据的某些部分不变?,elasticsearch,elasticsearch" /> elasticsearch 是否有可能在响应中获得ElasticSearch请求数据的某些部分不变?,elasticsearch,elasticsearch" />

elasticsearch 是否有可能在响应中获得ElasticSearch请求数据的某些部分不变?

elasticsearch 是否有可能在响应中获得ElasticSearch请求数据的某些部分不变?,elasticsearch,elasticsearch,我需要将一些数据传递给ElasticSearch请求,并按原样将其转换为响应,或者使用最小的结构差异 例如,请求可能如下所示: GET myindex/_search?metadata=12345 { "size": 1, "sort": [...], "query": { "match": { "my-type": "typename"

我需要将一些数据传递给ElasticSearch请求,并按原样将其转换为响应,或者使用最小的结构差异

例如,请求可能如下所示:

GET myindex/_search?metadata=12345
{
  "size": 1,
  "sort": [...], 
  "query": {
    "match": {
      "my-type": "typename"
    }
  }
}
我希望响应中包含此未更改的
metadata=12345
,例如:

{
  "took" : 3,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 3,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [...]
  },
  "metadata" : "12345"
}
有没有办法告诉ElasticSearch不要解析原始请求中的某些数据,而是“按原样”将其转换为响应


我知道这听起来像是一个荒谬的要求,所以这里有一些背景。ES请求在代码的一个位置构造,响应在另一个位置分析。这种混合需要一些重要的重构,最好避免。因此,如果我可以在响应中保留我原始请求的一部分,那将是一个快速的胜利。

看,我认为在
Elasticsearch
响应中没有这样的东西,因为它是固定的响应模板,无法定制(如果我错了,请纠正我)

但这里有一个选择;在
Elasticsearch
aggregations中,有一种方法可以帮助您解决这种情况,例如:

{
  "took" : 3,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 3,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [...]
  },
  "metadata" : "12345"
}
假设这是您的请求:

GET myindex/_search
{
  "size": 1,
  "sort": [...], 
  "query": {
    "match": {
      "my-type": "typename"
    }
  },
  "aggs": {
    "metadata": {
      "value_count": {
        "field": ""
      },
      "meta": {
        "value": "12345"
      }
    }
  }
}
因此,您将得到包含未更改元数据的响应,但采用另一种格式,如:

{
  "took" : 3,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 3,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [...]
  },
  ,
  "aggregations": {
    "metadata": {
      "meta": {
        "value": "12345"
      },
      "value": 0
    }
  }
}

听起来很有趣。你知道这种聚合是否会增加请求执行的时间吗?你的意思是当elasticsearch添加这种聚合时?是的,我的意思是ES执行起来比没有聚合的要重吗?看起来不是这样,但可能有隐藏的惊喜…:)这是一个没有字段值计数的元数据聚合,所以我认为这不是什么大不了的事情,而且据我所知,没有其他选择:)太棒了!我想我会采用这个解决方案!非常感谢你的帮助!