時間範囲でElasticsearchインデックスを照会しようとしていますが、さらに、特定の文字列値に一致する用語があります。
私はこのクエリを試してみましたが、これはかなり簡単なようです:
{
"query" : {
"bool": {
"must": [
{
"match": {
"method": "/customer/help"
}
},
{
"range" : {
"startTime": {
"from" : "2015-10-20T13:00-04:00",
"to" : "2015-10-20T14:00-04:00"
}
}
}
]
}
}
}
この場合、"/customer/help"
のメソッド値を持つ、指定された時間範囲内のすべてのドキュメントが必要です。
私の結果では、時間範囲内の結果を受け取っていますが、"method"
のフィールドに結果が必要なだけの場合に、"/customer/help"
フィールドのさまざまな値を持つドキュメントを取得しています。
マッピングでは、method
をnot_analyzed
として(またはkeyword
アナライザーで分析して)、クエリでterm
を使用する必要があります。このようにして、メソッドでインデックス付けするテキストは、単一のトークンとしてそのままインデックス付けされ、term
は、検索するテキストがmethod
でインデックス付けされたトークンと完全に一致することを確認します。
"method": {
"type": "string",
"index": "not_analyzed"
}
そして、使用する必要があるクエリ:
{
"query": {
"bool": {
"must": [
{
"term": {
"method": "/customer/help"
}
},
{
"range": {
"startTime": {
"from": "2015-10-20T13:00-04:00",
"to": "2015-10-20T14:00-04:00"
}
}
}
]
}
}
}