[我试图找出哪种方法查询更好,但是我的测试无法得出结论性的结果,可能是因为我无法在本地生成足够的数据。
考虑此映射:
{
"mappings": {
"_doc": {
"properties": {
"day": {
"type": "date",
"format": "yyyyMMdd",
"fields": {
"keyword" : {
"type" : "keyword"
}
}
},
... other stuff ...
}
}
}
}
[寻找连续的日期范围(例如从20191001到20191010时),我可以使用terms
或date_range
,它们在性能,缓存或内存使用方面都具有更多优势?
terms
:{
"query" : {
"bool" : {
"must" : [
{
"terms" : {
"day.keyword" : [
"20191001",
"20191002",
"20191003",
"20191004",
"20191005",
"20191006",
"20191007",
"20191008",
"20191009",
"20191010"
]
}
}
]
}
}
}
date_range
:{
"query": {
"bool": {
"filter": [
{
"range": {
"day": {
"gte": "20191001",
"lte": "20191010"
}
}
}
]
}
}
}
考虑您要在1月17日到1月19日之间选择数据的情况。您必须在术语查询中指定所有日期。随着范围的增加,您的输入也会增加。
顾名思义,范围查询是查询连续范围之间指定的记录。
术语查询主要是在文档中搜索特定/确切的术语。