当前位置: 首页 > 知识库问答 >
问题:

elasticsearch:在返回的文档中定义字段的顺序

南宫阳焱
2023-03-14

我正在向elasticsearch发送查询,它会响应其文档中字段的未知顺序。我如何修复elsasticsearch返回文档中字段的顺序?我的意思是,我正在发送这个查询:

{
"index": "my_index",
"_source":{
          "includes" : ["field1","field2","field3","field14"]
  },
"size": X,
"body": {
    "query": { 
        // stuff    
       }
    }
}

当它回应时,它给了我一些不正常的东西。我最后想将其转换为csv,并修复csv标题。有什么方法可以让我得到像doc1:{“field1”,“field2”,“field3”,“field14”}doc2:{“field1”,“field2”,“field3”,“field14”}。。。与我的“\u源”的顺序相同?

谢谢你的帮助。

共有1个答案

井修雅
2023-03-14

Elasticsearch中的文档是JSON哈希/映射,根据定义,映射是无序的。

围绕这一点的一个解决方案是使用Logstash,以便使用elasticsearch输入从ES中提取文档,并使用CSV输出以CSV格式输出它们。这样可以保证CSV文件中的字段的顺序与指定的顺序完全相同。另一个好处是,您不必编写自己的样板代码来从ES和sink提取到CSV,Logstash可以免费为您完成这一切。

Logstash配置如下所示:

input {
  elasticsearch {
    hosts => "localhost"
    query => '{ "query": { "match_all": {} } }'
    size => 100
    index => "my_index"
  }
}
filter {}
output {
    csv {
        fields => ["field1","field2","field3","field14"]
        path => "/path/to/file.csv"
    }
}
 类似资料:
  • 问题内容: 我正在搜索索引中的文档,然后尝试通过获取其中的一些文档。尽管收到了一组结果,但是某些文档无法通过简单的get来检索。更糟糕的是,我可以通过URI搜索获得相同的文档,其中 例如,运行一个简单的GET 给我结果: 但是,如果我使用相同的_id进行搜索: 我得到了预期的结果: 我正在通过Stretcher ruby​​ API索引文档,索引后立即进行刷新。我的本地设置是 2个节点 。我正在运

  • 问题内容: 如何在结果中返回特定字段的标记 例如,一个GET请求 退货 我想在结果中包含“ _source.message”字段的标记 问题答案: 使用以下script_fields脚本还有另一种方法: 重要的是要注意,尽管此脚本返回已被索引的实际术语,但它也会缓存所有字段值,并且在大索引上会占用大量内存。因此,在较大的索引上,使用以下MVEL脚本从存储的字段或源中检索字段值并快速重新解析它们可能

  • 我正在查看MongoDB在和投影上的留档。我试图弄清楚如何只返回投影数组字段的子集,但我似乎无法弄清楚。 相关帖子: > 我没有试图从mongob聚合框架中执行$片-获取嵌套数组的第一个文档字段。 我也没有尝试从mongo projection中的仅返回数组值展平子文档,因为我仍然需要顶部文档中的一些字段。 假设我在集合中有以下文档: 我想要执行的查询是: 我希望它只返回数组中为的子文档下的。例如

  • 问题内容: 为什么在能够过滤查询时无法看到_timestamp字段? 以下查询返回正确的文档,但不会返回时间戳本身。如何返回时间戳? 映射为: 样本输出: 问题答案: 启用时间戳字段后,默认情况下会对其进行索引但不存储。因此,尽管您可以通过时间戳字段进行搜索和过滤,但是您无法轻松地通过记录来检索它。为了能够检索时间戳字段,您需要使用以下映射重新创建索引: 这样,您将能够检索到时间戳记以来的毫秒数。

  • 问题内容: 我正在执行类似下面的短语查询。它返回给我按相关性排序的突出显示的片段。自然,我希望用户单击一个片段,然后将文档滚动到相应的位置。但是,我在Elasticsearch中看不到任何方法来找出片段在原始文档中的位置。有任何想法吗? 问题答案: 在此期间,我们找不到合适的解决方案,并遭到了以下黑客攻击(对我们而言非常有效):在索引之前,我们用“ [index]”注释文本中的每个单词,以便“ 一

  • 任何人都可以帮助我查询mongo以释放数组,我使用的是mongdb本机驱动程序我的收集文档如下,也请忽略我的objectId它只是示例 而我的预期产出是 我只想解开我的数组,在一个查询中的爱好描述之间添加一个逗号,谢谢你的帮助