首页 > 解决方案 > 在elasticsearch中搜索字符串数组中的确切字段,并按最新发布日期排序

问题描述

这是字符串数组中精确字符串搜索的后续问题。

如果文档有发布日期,还有另一件事。

{
   "datePublished":"2020-05-22T15:06:00.000Z",
   "locations":[
      "Landkreis Cloppenburg",
      "Berlin"
   ]
}

并以最新发布日期排序。如果我在查询中有这个结果,那么结果将与Landkreis Cloppenburg一起返回:

"sort": [
   {
      "doc.datePublished":{
         "order":"desc"
      }
   }
]

标签: sortingelasticsearch

解决方案


正确的查询应该如下所示

{
    "sort": [
        {
            "datePublished": {
                "order": "desc"
            }
        }
    ],
    "query": {
        "term": {
            "location": {
                "value": "Cloppenburg"
            }
        }
    }
}

由于之前的答案是我写的,我只是增强并包含了您的日期字段,所以我的映射看起来像

{
    "mappings": {
        "properties": {
            "location": {
                "type": "keyword"
            },
            "datePublished" : {
                "type" : "date"
            }
        }
    }
}

推荐阅读