首页 文章

Elasticsearch . 带有破折号的字符串的范围查询

提问于
浏览
0

我正在使用带有日期值字符串字段的数据的elasticsearch,如下所示:

"2016-01-25 18:40:18.933"

我正在尝试使用范围过滤器来获取日期到日期的值 . 例如:

"query" : {
        "filtered" : {
            "query" : {
                "range" : {
                    "createdDate" : {
                        "gte": "2015-11-01", 
                        "lte": "2016-01-25"
                    }
                }
            }
        }
      }
    }

但结果不包含 "createdDate": "2015-12-14 20:28:23.557" 的值

如果我使用 "gte": "2015""gte": "2014-12-31" ,那么 "createdDate": "2015-12-14" 的值将包含在结果中 .

我的查询有什么问题?

1 回答

  • 1

    如果您希望能够在日期上运行 range 查询,则需要将字段映射为date field,否则它将无法按预期工作 . 在您共享的映射中, createdDatestring . 您需要擦除索引并使用 createdDate 字段的正确映射创建一个新索引,如下所示:

    curl -XPOST localhost:9200/documents -d '{
       "mappings": {
          "order": {
             "properties": {
                 "createdDate": {
                    "type": "date"
                 }
             }
          }
       }
    }'
    

    然后,您可以重新索引数据, range 查询将按预期工作 .

相关问题