是否可以只从elasticsearch查询中获得原始结果而不使用elastic-added json

yfjy0ee7  于 2023-03-29  发布在  ElasticSearch
关注(0)|答案(1)|浏览(135)

正如标题所示,我想知道是否有人知道在返回的JSON数组中检索 just 查询结果的方法(即:数据与写入索引时的数据完全相同)。即,而不是获取:

{
   "hits": {
      "total": {
         "value": 3
      },
      "hits": [
         {
            "_source": {
               "name": "name1",
               "mydata": {
                  "data-stuff1": "stuff1 etc"
               }
            }
         },
         {
            "_source": {
               "name": "name2",
               "mydata": {
                  "data-stuff2": "stuff2 etc"
               }
            }
         },
         {
            "_source": {
               "name": "name3",
               "mydata": {
                  "data-stuff3": "stuff3 etc"
               }
            }
         }
      ]
   }
}

要接收 * 仅 * 数据本身:

[
    {
       "data": {
          "data-stuff1": "stuff1 etc"
       }
    },
    {
       "data": {
          "data-stuff2": "stuff2 etc"
       }
    },
    {
       "data": {
          "data-stuff3": "stuff3 etc"
       }
    }
]

(i.e.没有hits.hits,但更重要的是,每个元素都没有'_source' Package 器)
当然,如果有错误,需要检查,甚至让弹性包含它的 meta数据...这个问题的主要目标是得到一个纯结果数组,就像它们在编写时一样,没有被_source污染。
由于_source是由elastic添加的,如果elastic可以[可选地]不将其包含在结果中,那就太好了。
上面的示例在查询中包含了?filter_path=hits.total.value,hits.hits._source参数,但这只是删除了元数据对象(这可能很有用)。

slmsl1lt

slmsl1lt1#

您可以在查询中使用fields参数代替_source参数。fields参数允许您指定要从索引中检索哪些字段。默认情况下,Elasticsearch在响应中包含_source字段,但如果您显式指定字段,则会排除_source字段。
示例查询为:

{
  "query": {
    "match_all": {}
  },
  "fields": ["data-stuff"]
}

相关问题