# Elastisearch怎么求查询结果的交集，如MYSQL的interset

bag
• 57

1.查询20151216-17所有的名字

``````{
"from": 0,
"size": 200,
"query": {
"bool": {
"must": {
"range": {
"DATE": {
"from": 20151216,
"to": 2015121617,
"include_lower": true,
"include_upper": true
}
}
}
}
},
"_source": {
"includes": [
"NAME"
],
"excludes": []
}``````

2.查询20151217-18所有的名字

``````{
"from": 0,
"size": 200,
"query": {
"bool": {
"must": {
"range": {
"DATE": {
"from": 20151216,
"to": 2015121617,
"include_lower": true,
"include_upper": true
}
}
}
}
},
"_source": {
"includes": [
"NAME"
],
"excludes": []
}
``````

``````SELECT NAME FROM Table1 where DATE between 20151216 and 20151217 interset SELECT NAME FROM Table1 where DATE between 20151217 and 20151218
``````

Elastisearch中怎么做呢？

2 个回答
✓ 已被采纳
``SELECT NAME FROM Table1 where DATE between 20151216 and 20151217 interset SELECT NAME FROM Table1 where DATE between 20151217 and 20151218``

``````SELECT NAME FROM Table1 where (DATE between 20151217 and 20151218) OR (DATE between 20151216 and 20151217)
GROUP BY NAME``````

REQUEST:

``````{
"query": {
"bool": {
"should":[
{
"range": {
"createdTime": {
"from": 1477984000,
"to": 1477984695
}
}
},
{
"range": {
"createdTime": {
"from": 1477984000,
"to": 1477984835
}
}
}
]
}
},
"size": 0,
"aggs": {
"my_price": {
"terms": {
"field": "price"
}
}
}
}``````

RESPONSE:

``````{
"took": 3,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 542,
"max_score": 0,
"hits": []
},
"aggregations": {
"my_price": {
"doc_count_error_upper_bound": 8,
"sum_other_doc_count": 377,
"buckets": [
{
"key": 148,
"doc_count": 24
},
{
"key": 98,
"doc_count": 23
},
{
"key": 128,
"doc_count": 20
},
{
"key": 160,
"doc_count": 20
},
{
"key": 108,
"doc_count": 18
},
{
"key": 105,
"doc_count": 14
},
{
"key": 100,
"doc_count": 13
},
{
"key": 118,
"doc_count": 12
},
{
"key": 88,
"doc_count": 11
},
{
"key": 81,
"doc_count": 10
}
]
}
}
}``````

bruce_zhao
• 80

###### 你尚未登录，登录后可以
• 和开发者交流问题的细节
• 关注并接收问题和回答的更新提醒
• 参与内容的编辑和改进，让解决方法与时俱进