Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 弹性搜索。带破折号字符串的范围查询_Search_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Range - Fatal编程技术网 elasticsearch,range,Search,elasticsearch,Range" /> elasticsearch,range,Search,elasticsearch,Range" />

Search 弹性搜索。带破折号字符串的范围查询

Search 弹性搜索。带破折号字符串的范围查询,search,elasticsearch,range,Search,elasticsearch,Range,我将elasticsearch用于具有日期值字符串字段的数据,如下所示: curl -XPOST localhost:9200/documents -d '{ "mappings": { "order": { "properties": { "createdDate": { "type": "date" } } } } }' “2016-

我将elasticsearch用于具有日期值字符串字段的数据,如下所示:

curl -XPOST localhost:9200/documents -d '{
   "mappings": {
      "order": {
         "properties": {
             "createdDate": {
                "type": "date"
             }
         }
      }
   }
}' 
“2016-01-2518:40:18.933”

我正在尝试使用范围过滤器来获取从日期到日期的值。例如: "query" : { "filtered" : { "query" : { "range" : { "createdDate" : { "gte": "2015-11-01", "lte": "2016-01-25" } } } } } } “查询”:{ “过滤”:{ “查询”:{ “范围”:{ “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”
的值


我的查询出了什么问题?

如果您希望能够在日期上运行
范围
查询,则需要将字段映射为,否则它将无法按预期工作。在您共享的映射中,
createdDate
是一个
字符串
。您需要擦除索引,并为
createdDate
字段创建一个具有正确映射的新索引,如下所示:

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

然后,您可以重新索引数据,您的
范围
查询将按预期工作。

您可以共享
createdDate
字段的映射吗
curl-XGET localhost:9200/index/_-mapping
{“文档”:{“映射”:{“顺序”:{“属性”:{…“创建数据”:{“类型”:“字符串”}
谢谢您的回复!我在将字段转换为日期时遇到问题,因为弹性服务由外部团队支持,而不仅仅是我使用它。所以,这可能并不简单。我认为弹性可以将字符串字段范围()它在其他字段中也可以工作,那么为什么在这个字段中会出现问题呢?
范围
查询适用于字符串字段,但它所要做的只是执行一个“字典”范围(即字母顺序),也就是说,它不会解释日期。如果您希望能够使用此字段筛选日期范围,它必须是一个
date
字段。从词典范围的角度来看,字符串“2015-12-14”不大于字符串“2015-11-01”?我想它会逐字符比较字符串,“2015-1”等于,但“2”大于“1”这里的问题是您的字符串也会被分析,因此字符串
2015-12-14 20:28:23.557
将被标记为以下六个标记,即
2015
12
14
20
28
23.557
。因此,
范围
不会在整个字符串值上运行,而是在这些字符串值上运行好的,再次感谢!我将尝试将字段转换为日期类型。