Elasticsearch多重匹配在提供空字符串时不返回所有结果
我总共有1783条记录,我希望ES返回所有记录,以防未提供multi_match查询(Elasticsearch多重匹配在提供空字符串时不返回所有结果,
Warning: implode(): Invalid arguments passed in /data/phpspider/zhask/webroot/tpl/detail.html on line 45
,,我总共有1783条记录,我希望ES返回所有记录,以防未提供multi_match查询(searchObject.query='') 如果我将一个空数组传递给query.bool,应该,那么理论上我可以根据searchObject.query值更新下面的ES对象,但我不确定这是否是个好主意 { _source: [ 'id', 'event', 'description', 'element', 'date'
searchObject.query=''
)
如果我将一个空数组传递给query.bool,应该,那么理论上我可以根据searchObject.query
值更新下面的ES对象,但我不确定这是否是个好主意
{
_source: [
'id',
'event',
'description',
'element',
'date'
],
track_total_hits: true,
query: {
bool: {
should: [{
multi_match:{
query: searchObject.query
fields: ["element","description","nar.*","title","identifier"]
}
}],
filter: []
}
},
highlight: { fields: { '*': {} } },
sort: [],
from: 0,
size: 10
}
有什么建议吗?您可以在的should
后面加上:
{
"_source": [
"id",
"event",
"description",
"element",
"date"
],
"track_total_hits": true,
"query": {
"bool": {
"should": [
{
"multi_match": {
"query": "",
"fields": [
"line",
"element",
"description",
"nar.*",
"title",
"identifier"
]
}
},
{
"match_all": {}
}
],
"filter": []
}
},
"highlight": {
"fields": {
"*": {}
}
},
"sort": [],
"from": 0,
"size": 10
}
这就是它通常的用途。IMHO在执行ES请求之前应检查空字符串。我假设它是来自自动完成之类的。您可以在应该中附加一个:
{
"_source": [
"id",
"event",
"description",
"element",
"date"
],
"track_total_hits": true,
"query": {
"bool": {
"should": [
{
"multi_match": {
"query": "",
"fields": [
"line",
"element",
"description",
"nar.*",
"title",
"identifier"
]
}
},
{
"match_all": {}
}
],
"filter": []
}
},
"highlight": {
"fields": {
"*": {}
}
},
"sort": [],
"from": 0,
"size": 10
}
这就是它通常的用途。IMHO在执行ES请求之前应检查空字符串。我假设它来自自动完成之类的程序。谢谢你的回答!事实上,查询字符串来自输入,如果用户实际键入某个内容,我仍然不确定这是如何工作的?在这种情况下,您应该在前端决定发送哪个查询。也检查这里的对话:我检查了这个链接,他的问题与我的问题非常相似,只是如果没有提供查询参数,我想返回所有文档,否则就执行普通的多匹配查询。我是否可以基于查询参数构建bool对象,然后将其传递给ES?我想在query param为空的情况下使用match_all,否则使用multi_match,因为我通常不知道这样的条件。在之前构建查询…如果我没有使用这些条件,我应该如何在之前构建查询?如果查询参数不为空,我仍然需要multi_match object,并且我仍然需要match_all object返回所有记录。谢谢您的回答!事实上,查询字符串来自输入,如果用户实际键入某个内容,我仍然不确定这是如何工作的?在这种情况下,您应该在前端决定发送哪个查询。也检查这里的对话:我检查了这个链接,他的问题与我的问题非常相似,只是如果没有提供查询参数,我想返回所有文档,否则就执行普通的多匹配查询。我是否可以基于查询参数构建bool对象,然后将其传递给ES?我想在query param为空的情况下使用match_all,否则使用multi_match,因为我通常不知道这样的条件。在之前构建查询…如果我没有使用这些条件,我应该如何在之前构建查询?如果查询参数不是空的,我仍然需要multi_match对象,并且我仍然需要match_all对象来返回所有记录。