任何人都可以解释为什么这个elasticsearch语法不正确。我很难理解基本的语法
这有效
"query": {
"filtered": {
"filter": {
"bool" : {
"should": {
"terms": {
"headline":["aut"]
}
},
"must": {
"range": {
"date_at" : {
"gt": "1900-01-01 00:00:00",
"lt": "1980-01-01 00:00:00"
}
}
}
}
}
}
}
但是,此查询不起作用
"query": {
"filtered": {
"filter": {
"bool" : {
"should": {
"terms": {
"headline":["aut"]
}
},
"must": {
"range": {
"date_at" : {
"gt": "1900-01-01 00:00:00",
"lt": "1980-01-01 00:00:00"
}
},
"term": {
"headline": "et"
}
}
}
}
}
}
在布尔“必须”中添加“term”子句会导致语法错误,所有碎片都被破坏等等......问题似乎是我想在两个不同的bool中使用相同的索引两次
标题必须包含“foo”
标题应该包含“bar”
有可能吗?
答案 0 :(得分:1)
你试过这个吗?
{
"query": {
"filtered": {
"filter": {
"bool": {
"should": [
{
"terms": {
"headline": [
"aut"
]
}
}
],
"must": [
{
"range": {
"date_at": {
"gt": "1900-01-01 00:00:00",
"lt": "1980-01-01 00:00:00"
}
}
},
{
"term": {
"headline": "et"
}
}
]
}
}
}
}
}
这可能是你想要做的直接解释,但这可能是你真正需要的:
{
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"range": {
"date_at": {
"gt": "1900-01-01 00:00:00",
"lt": "1980-01-01 00:00:00"
}
}
},
{
"term": {
"headline": "et"
}
}
]
}
}
}
}
}
以下是我用来玩它的一些代码:
http://sense.qbox.io/gist/ea16ff321397c2187ef503541019d52c564b7460