使用Elasticsearch在特定时间戳的范围内搜索特定文本

时间:2014-04-28 09:11:09

标签: elasticsearch

我曾与Elasticsearch合作,并使用Elasticsearch PHP Client API在Internet上对如何使用特定文本查询数据以及如何在一系列时间戳内查询数据进行了一些研究。现在我想将这两个查询合二为一。让我们说在某个时间戳的范围内搜索某个文本。有人可以告诉我如何使用Elasticsearch PHP Client API吗?提前致谢!我在互联网上搜索过,但仍然无法将这两个查询合并为一个: - (

1 个答案:

答案 0 :(得分:3)

以下是bool查询的示例,此处的逻辑是记录必须位于日期范围内,并且还应包含textfield字段中的文本。 您可以在must子句中同时拥有两个查询条件。

{
    "from": 0,
    "size": 20,
    "query": {
        "bool": {
            "must": [
                {
                    "range": {
                        "datefield": {
                            "gte": "from",
                            "lte": "to"
                        }
                    }
                }
            ],
            "should": [
                {
                    "match": {
                        "textfield": {
                            "query": "Name",
                            "boost": 10
                        }
                    }
                }
            ]
        }
    }
}

更新 - 或必须两个

{
    "from": 0,
    "size": 20,
    "query": {
        "bool": {
            "must": [
                {
                    "range": {
                        "datefield": {
                            "gte": "from",
                            "lte": "to"
                        }
                    }
                },
                {
                    "match": {
                        "textfield": {
                            "query": "Name",
                            "boost": 10
                        }
                    }
                }
            ]
        }
    }
}