Elasticsearch获取给定字段的最后一个文档(如果它存在)

时间:2016-04-01 10:34:13

标签: elasticsearch filter

我有一个简短的问题似乎很简单,但到目前为止我找不到任何答案。

我想在Elasticsearch节点上检索给日期字段的最后一个文档。但我希望得到最后一个文档,仅适用于包含特定字段的文档。

例如,让我们说我想获得包含该字段的最后一次购买" promotionCode " :

查询:

http://elasticsearch:9200/store1/purchase/_search?q=vendor:Marie&size=1&sort=date:desc

store1 是我的索引,购买是一种文档类型。

现在让我们说我在ElasticSearch中有这两个文件:

"hits": [
      {
        "_index": "store1",
        "_type": "purchase",
        "_id": "1",
        "_score": 1,
        "_source": {
            "date": "2016-03-16T12:53:16.000Z",
            "vendor": "Marie",
            "promotionCode": "XYZ123"
        }
      },
      {
        "_index": "store1",
        "_type": "purchase",
        "_id": "2",
        "_score": 1,
        "_source": {
            "date": "2016-03-18T12:53:16.000Z",
            "vendor": "Marie"
        }
      }
]

以上查询将检索ID为2的文档,但我没有任何字段" promotionCode "在我的结果中。

如果我想获取包含特定字段的最后一个文档,我该怎么做?

我探索了"领域"过滤器,但它只返回void文件,如果该字段未包含,我读到有关源过滤,但不确定它是否正在做我想要的...

非常感谢任何暗示!

2 个答案:

答案 0 :(得分:3)

哟可以尝试使用此查询:

{
    "query": {
        "term": { "vendor": "Marie" }
    },
    "filter": {
        "bool": {
            "must_not": { "missing": { "field": "promotionCode" } }
        }
    },
    "sort": { "date" : "desc" },
    "size": 1
}

答案 1 :(得分:0)

您可以使用Parsing HTML in python - lxml or BeautifulSoup? Which of these is better for what kinds of purposes?

 <div class="chat" ng-controller="myController" ng-init="listChatMessages = []">

<h2>Chat altro utente</h2>
<div class="chatbox">
Messaggi inviati:
<div ng-repeat="message in listChatMessages">
  <div>Messaggio: {{message.text}}</div>
</div>

希望它有所帮助!!