0
我有一個方面的統計查詢非常類似於此:Elasticsearch方面的統計查詢不正確的分組
但是,我key_field
是一個日期。
我期待收到按完整key_field值[「2014-01-20」,「2014-01-21」,「2014-01-22」]分組的結果,但它似乎將關鍵字段當遇到「 - 」時。我收到的實際上是按[「2014」,「01」,「20」,「21」,「22」]分組的。
爲什麼它分裂我的鑰匙?
我有一個方面的統計查詢非常類似於此:Elasticsearch方面的統計查詢不正確的分組
但是,我key_field
是一個日期。
我期待收到按完整key_field值[「2014-01-20」,「2014-01-21」,「2014-01-22」]分組的結果,但它似乎將關鍵字段當遇到「 - 」時。我收到的實際上是按[「2014」,「01」,「20」,「21」,「22」]分組的。
爲什麼它分裂我的鑰匙?
您可能已使用standard
分析器將您的key_field
映射爲string
類型。
這會將2014-01-20
標記爲2014
,01
和20
。
您可能想將日期索引爲date
。您也可以將其作爲字符串進行分析而不用進行分析。
這裏有一個可運行的例子,你可以玩:https://www.found.no/play/gist/5eb6b8d176e1cc72c9b8
#!/bin/bash
export ELASTICSEARCH_ENDPOINT="http://localhost:9200"
# Create indexes
curl -XPUT "$ELASTICSEARCH_ENDPOINT/play" -d '{
"settings": {},
"mappings": {
"type": {
"properties": {
"date_as_a_string": {
"type": "string"
},
"date_as_nonanalyzed_string": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}'
# Index documents
curl -XPOST "$ELASTICSEARCH_ENDPOINT/_bulk?refresh=true" -d '
{"index":{"_index":"play","_type":"type"}}
{"date":"2014-01-01T00:00:00.000Z","date_as_a_string":"2014-01-01T00:00:00.000Z","date_as_nonanalyzed_string":"2014-01-01T00:00:00.000Z","x":42}
'
# Do searches
curl -XPOST "$ELASTICSEARCH_ENDPOINT/_search?pretty" -d '
{
"facets": {
"date": {
"terms_stats": {
"key_field": "date",
"value_field": "x"
}
},
"date_as_a_string": {
"terms_stats": {
"key_field": "date_as_a_string",
"value_field": "x"
}
},
"date_as_nonanalyzed_string": {
"terms_stats": {
"key_field": "date_as_nonanalyzed_string",
"value_field": "x"
}
}
},
"size": 0
}
'