elasticsearch 将结果减少到一列 - 每个文档仅返回 1 个值

Posted

技术标签:

【中文标题】elasticsearch 将结果减少到一列 - 每个文档仅返回 1 个值【英文标题】:elasticsearch reducing result to one column - return only 1 value for each document 【发布时间】:2021-12-09 15:02:57 【问题描述】:

我尝试将 elasticsearch 的 json 结果减少到我建议获取的一列或多列。有什么办法吗?

当我使用以下命令时,我将结果嵌套到“_source”中:

 
 "from": "0", "size":"2",
 "_source":["id"],
 "query":                            
  "match_all": 
  
 
 '

并且不需要我的用例。

我得到这个结果:

  "took" : 0,
  "timed_out" : false,
  "_shards" : 
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  ,
  "hits" : 
    "total" : 
      "value" : 10000,
      "relation" : "gte"
    ,
    "max_score" : 1.0,
    "hits" : [
      
        "_index" : "indexer_1",
        "_type" : "type_indexer_1",
        "_id" : "38142",
        "_score" : 1.0,
        "_source" : 
          "id" : 38142
        
      ,
      
        "_index" : "indexer_1",
        "_type" : "type_indexer_1",
        "_id" : "38147",
        "_score" : 1.0,
        "_source" : 
          "id" : 38147
        
      
    ]
  

我想要什么:


  "took" : 0,
  "timed_out" : false,
  "_shards" : 
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  ,
  "hits" : 
    "total" : 
      "value" : 10000,
      "relation" : "gte"
    ,
    "max_score" : 1.0,
    "hits" : [
      
        "id" : 38142
      ,
      
        "id" : 38147
      
    ]
  

我会喜欢这个 json 结果:


  
    "id" : 38142
  ,
  
    "id" : 38147
  

ES中有没有开箱即用的方法来减少结果集?

【问题讨论】:

检查这个问题***.com/questions/23968200/… 【参考方案1】:

您可以过滤输出 JSON 查看文档:response filtering

GET /index/_search?filter_path=hits.hits._id
 
 "from": "0", 
 "size":"2",
 "_source":["id"],
 "query":                            
  "match_all": 
  
 

【讨论】:

这确实有效,直到 _id 与 _source,id 相同但不是我想要的。 是的,根据您的问题 _id 与 id 相同

以上是关于elasticsearch 将结果减少到一列 - 每个文档仅返回 1 个值的主要内容,如果未能解决你的问题,请参考以下文章

oracle查询将不同的列填充到一列中

内存分配失败:如何将四个结果集合并到一张表中

实体框架将集合属性映射到一列

将 Div 移动到一列的右侧和另一列的下方

如何将多列附加到一列?

将 html 表导出到一列上有 tinymce 的单词