我无法使用日期格式搜索elastic-search
我创建了一个索引,字段映射显示为日期格式,但查询失败。
在加载数据之前,我创建了一个带映射的索引,并将我的数据加载到弹性搜索中。
"mappings": {
"workers": {
"person.birthDate": {
"full_name": "person.birthDate",
"mapping": {
"birthDate": {
"type": "date",
"format": "yyyy-MM-dd||epoch_millis"
}
}
}
我的输入查询如下
POST _search
{
"query": {
"bool" : {
"must" : [ {
"match" : {
"person.birthDate" : {
"query" : "1968-06-15",
"type" : "date"
}
}
} ]
}
},
"from": 0,
"size": 10,
"sort": [],
"aggs": {}
}
,输出
{
"error": {
"root_cause": [
{
"type": "query_parsing_exception",
"reason": "[match] query does not support type date",
"index": "index1",
"line": 9,
"col": 33
}
],
"type": "search_phase_execution_exception",
"reason": "all shards failed",
"phase": "query",
"grouped": true,
"failed_shards": [
{
"shard": 0,
"index": "index1",
"node": "RewaFar_TsGVGz1RmgOxlA",
"reason": {
"type": "query_parsing_exception",
"reason": "[match] query does not support type date",
"index": "index1",
"line": 9,
"col": 33
}
}
]
},
"status": 400
}
对此有任何帮助将不胜感激。 请注意我对弹性搜索很新。
答案 0 :(得分:2)
上述内容不是有效的match
查询。 type:date
不是匹配查询的有效选项
如果您想按日期过滤,请推荐range query。
示例:
put test
{
"mappings": {
"test": {
"properties" : {
"birthDate": {
"type": "date",
"format": "yyyy-MM-dd||epoch_millis"
}
}
}
}
}
put test/test/1
{
"birthDate" : "2016-05-20"
}
##timestamp for 2016-05-20 19:00:24 GMT
put test/test/2
{
"birthDate" : 1463771107000
}
post test/test/_search
{
"query": {
"range" : {
"birthDate" : {
"gte" : "2016-05-20",
"lt" : "2016-05-21",
"format": "yyyy-MM-dd||epoch_millis"
}
}
}
"hits": [
{
"_index": "test",
"_type": "test",
"_id": "2",
"_score": 1,
"_source": {
"birthDate": 1463771107000
}
},
{
"_index": "test",
"_type": "test",
"_id": "1",
"_score": 1,
"_source": {
"birthDate": "2016-05-20"
}
}
]