搜索结果正在快递途中

es如何查询月日,例如我只想查8-5到9-15的信息,不需要年份,但是搜索的时候结果要带上

Elasticsearch | 作者 yangchunchun | 发布于2019年09月19日 | 阅读数:1018

rt
已邀请:

liuxg - Elastic

赞同来自:

你可以使用range来查询:
 
PUT doc1/_doc/1
{
  "name": "name1",
  "DOB": "2015-01-03"
}

PUT doc1/_doc/2
{
  "name": "name2",
  "DOB": "2016-01-03"
}

PUT doc1/_doc/3
{
  "name": "name3",
  "DOB": "2017-01-03"
}

GET doc1/_search
{
  "query": {
    "range": {
      "DOB": {
        "gte": "2016-01-01",
        "lte": "2019-01-01"
      }
    }
  }
}
 
显示结果:
    "hits" : [
      {
        "_index" : "doc1",
        "_type" : "_doc",
        "_id" : "2",
        "_score" : 1.0,
        "_source" : {
          "name" : "name2",
          "DOB" : "2016-01-03"
        }
      },
      {
        "_index" : "doc1",
        "_type" : "_doc",
        "_id" : "3",
        "_score" : 1.0,
        "_source" : {
          "name" : "name3",
          "DOB" : "2017-01-03"
        }
      }
    ]

God_lockin

赞同来自:

LZ是不是需要忽略年的元素?比如需要做同期环比,就要查2018-08-05~2018-09-15,2017-08-05~2017-09-15……
 
那就需要一段一段自己用range拼
 
如果不需要的话直接一个range就好了

chenghao

赞同来自:

{
  "query": {
    "range": {
      "birthday": {
        "gte": "08-05",
        "lt": "12-31",
        "format": "MM-dd"
      }
    }
  }
}

要回复问题请先登录注册