elasticsearch - 如何按ID中的文档对Elasticsearch进行排序?

标签 elasticsearch bonsai-elasticsearch

我正在使用Bonsai的免费层,并试图编写一个脚本来管理我的Elastic索引中的文档数。为了最大程度地保存文档,我想开始删除其中包含许多嵌套文档的文档。
例:

{   
 "title": "Spiderman saves child from well",   
 "body":  "Move over, Lassie! New York has a new hero. But is he also a menace?",   
 "authors": [
   { 
      "name":  "Jonah Jameson",       
      "title": "Sr. Editor",     
   },     
   {       
      "name":  "Peter Parker",       
      "title": "Photos",     
   }   
  ],   
 "comments": [     
   {       
      "username": "captain_usa",       
      "comment":  "I understood that reference!",     
   },     
   {       
      "username": "man_of_iron",       
      "comment":  "Congrats on being slightly more useful than a ladder.",     
   }   
  ],   
 "photos": [ 
   {       
      "url":      "https://assets.dailybugle.com/12345",       
      "caption":  "Spiderman delivering Timmy back to his mother",     
   }   
  ] 
 }
    
Elastic中有什么可以告诉我该文档由于广泛的嵌套而实际上是6个文档吗?理想情况下,我将能够通过此“文档计数”对 flex 记录进行排序。
谢谢!

最佳答案

如果您的authorscommentsphotos被琐碎地嵌套(对象数组)或专用elasticsearch nested 数据类型的,则可以执行以下操作:

GET bonsai/_search
{
  "_source": [""], 
  "sort": [
    {
      "_script": {
        "type": "number",
        "script": {
          
          "source": """
            def count = 1; // top level doc count is 1
            for (def entry : params._source.values()) {
              if (entry instanceof ArrayList) {
                count += entry.size()
              }
            }
            return count;
          """
        }
      }
    }
  ]
}
我真的不知道上面的文档的大小是6怎么做-所以我想这是因为您也计算了顶级文档。随意在脚本中从0开始计数。

关于elasticsearch - 如何按ID中的文档对Elasticsearch进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64002767/

相关文章:

python - 将Kibana查询(创建索引模式)转换为Python请求

elasticsearch - 您可以在Elasticsearch过滤器中引用其他查询吗?

elasticsearch - 如何在Elasticsearch中建立文档索引以最大程度地减少文档数量?

java - Elasticsearch异常: mappping depth in index has been exceeded

ruby-on-rails - 尝试通过Heroku上的Rake导入ElasticSearch模型时出现连接被拒绝的错误

node.js - 如何使用 Vue.js 将 elasticsearch json 信息呈现为可点击链接

elasticsearch - 用Logstash进行Grok解析失败

python - 您可以订购 Elasticsearch 查询结果吗?如果字段中为True,则强制将其结尾

ruby-on-rails - 实现 ElasticSearch 后,Rails 应用程序在 Heroku 上崩溃