Elasticsearch重复数据删除

Elasticsearch重复数据删除

我有一组文件,每个文件看起来像

    {
        "_id": ... ,
        "Author": ...,
        "Content": ....,
        "DateTime": ...
    }

我想对集合发布一个查询,以便得到每个作者的最早文献作为回应。我正在考虑使用术语汇总,但是当我这样做时,我得到了一个存储桶列表,它们是唯一的Author值,并且没有告诉我有关哪个文档最旧的信息。此外,该方法要求随后调用ES,这是不希望的。

您可以提供的任何建议将不胜感激。谢谢。

最佳答案

您可以在 flex 搜索中使用collapse

它将返回按DateTime排序的每个作者的前1条记录

{
  "size": 10,
  "collapse": {
    "field": "Author.keyword"
  },
  "sort": [
    {
      "DateTime": {
        "order": "desc"
      }
    }
  ]
}

结果
    "hits" : [
      {
        "_index" : "index83",
        "_type" : "_doc",
        "_id" : "e1QwrnABAWOsYG7tvNrB",
        "_score" : null,
        "_source" : {
          "Author" : "b",
          "Content" : "ADSAD",
          "DateTime" : "2019-03-11"
        },
        "fields" : {
          "Author.keyword" : [
            "b"
          ]
        },
        "sort" : [
          1552262400000
        ]
      },
      {
        "_index" : "index83",
        "_type" : "_doc",
        "_id" : "elQwrnABAWOsYG7to9oS",
        "_score" : null,
        "_source" : {
          "Author" : "a",
          "Content" : "ADSAD",
          "DateTime" : "2019-03-10"
        },
        "fields" : {
          "Author.keyword" : [
            "a"
          ]
        },
        "sort" : [
          1552176000000
        ]
      }
    ]
  }

编辑1:

{
  "size": 10,
  "collapse": {
    "field": "Author.keyword"
  },
  "sort": [
    {
      "DateTime": {
        "order": "desc"
      }
    }
  ],
  "aggs":
         {
           "authors": {
                       "terms": {
                                "field": "Author.keyword", "size": 10 },
                       "aggs": {
                                "doc_count": { "value_count": { "field":
                                                "Author.keyword"
                                             }
                                 }
                           }
                     }
             }
}

关于elasticsearch - Elasticsearch重复数据删除,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60555128/

10-10 23:56