需要从弹性搜索上的 AND、OR 过滤器升级到 ES7 的布尔查询
need to upgrade from AND, OR filters on elasticsearch to boolean queries for ES7
我正在尝试更新一个在 ElasticSearch 2 上可行但在 ES7 中不存在的查询。
这是下面的查询:
{
"filter":
{
"and":[
{
"or":[
{
"range":
{
"date_of_birth":
{
"lte": 5
}
}
},
{
"range":
{
"age":{
"gte": 15
}
}
}]
},{
"range":
{
"begin_time":
{
"lte": 23
}
}
}]
}
}
我知道我应该使用布尔查询,但因为它是一个过滤器,所以我很困惑,非常感谢你的帮助:)
好了,只需将 and
替换为 bool/filter
,将 or
替换为 bool/should
:
{
"query": {
"bool": {
"filter": [
{
"bool": {
"should": [
{
"range": {
"date_of_birth": {
"lte": 5
}
}
},
{
"range": {
"age": {
"gte": 15
}
}
}
]
}
},
{
"range": {
"begin_time": {
"lte": 23
}
}
}
]
}
}
}
我正在尝试更新一个在 ElasticSearch 2 上可行但在 ES7 中不存在的查询。 这是下面的查询:
{
"filter":
{
"and":[
{
"or":[
{
"range":
{
"date_of_birth":
{
"lte": 5
}
}
},
{
"range":
{
"age":{
"gte": 15
}
}
}]
},{
"range":
{
"begin_time":
{
"lte": 23
}
}
}]
}
}
我知道我应该使用布尔查询,但因为它是一个过滤器,所以我很困惑,非常感谢你的帮助:)
好了,只需将 and
替换为 bool/filter
,将 or
替换为 bool/should
:
{
"query": {
"bool": {
"filter": [
{
"bool": {
"should": [
{
"range": {
"date_of_birth": {
"lte": 5
}
}
},
{
"range": {
"age": {
"gte": 15
}
}
}
]
}
},
{
"range": {
"begin_time": {
"lte": 23
}
}
}
]
}
}
}