在弹性搜索中使用 GET API 搜索查询
Search query using GET API in elastic search
我使用的是 7.4 版。
我想主要实现三件事。
我想根据日期范围进行过滤,然后在 "title" 字段中搜索关键字并输出所选字段。以下是我试过但没有用的代码,请帮忙。
POST test/_search
{
"query": {
"filtered": {
"query": {
"multi_match": {
"query": "Market",
"fields": [
"title",
"message"
]
}
},
"filter": {
"range": {
"published": {
"gte": "now-300d/d",
"lt": "now/d"
}
}
}
}
},
"_source": [
"title",
"message",
"published"
]
}
我得到如下
{
"error": {
"root_cause": [
{
"type": "parsing_exception",
"reason": "no [query] registered for [filtered]",
"line": 3,
"col": 17
}
],
"type": "parsing_exception",
"reason": "no [query] registered for [filtered]",
"line": 3,
"col": 17
},
"status": 400
}
以上有没有其他的方法或者更正的方法?
ES 7.4 不支持 filtered 我们将使用 must query
POST <index_name>/_search
{
"query": {
"bool": {
"must": [
{
"multi_match": {
"query": "Market",
"fields": [
"title",
"message"
]
}
},
{
"range": {
"published": {
"gte": "now-300d/d",
"lt": "now/d"
}
}
}
]
}
},
"_source": [
"title",
"message",
"published"
]
}
我使用的是 7.4 版。 我想主要实现三件事。 我想根据日期范围进行过滤,然后在 "title" 字段中搜索关键字并输出所选字段。以下是我试过但没有用的代码,请帮忙。
POST test/_search
{
"query": {
"filtered": {
"query": {
"multi_match": {
"query": "Market",
"fields": [
"title",
"message"
]
}
},
"filter": {
"range": {
"published": {
"gte": "now-300d/d",
"lt": "now/d"
}
}
}
}
},
"_source": [
"title",
"message",
"published"
]
}
我得到如下
{
"error": {
"root_cause": [
{
"type": "parsing_exception",
"reason": "no [query] registered for [filtered]",
"line": 3,
"col": 17
}
],
"type": "parsing_exception",
"reason": "no [query] registered for [filtered]",
"line": 3,
"col": 17
},
"status": 400
}
以上有没有其他的方法或者更正的方法?
ES 7.4 不支持 filtered 我们将使用 must query
POST <index_name>/_search
{
"query": {
"bool": {
"must": [
{
"multi_match": {
"query": "Market",
"fields": [
"title",
"message"
]
}
},
{
"range": {
"published": {
"gte": "now-300d/d",
"lt": "now/d"
}
}
}
]
}
},
"_source": [
"title",
"message",
"published"
]
}