使用官方python客户端在 Elasticsearch 上运行以下查询会返回错误的响应,但单独运行它们会给出正确的响应。
以下对象作为search_doc传递给{!join from=attribute1 to=attribute2 fromIndex="xyz:8983/solr/core2"} attribute3:*
:
elasticsearch.msearch()
并返回以下响应:
[
{
'type': 1,
'index': 'xyz'
},
{
'query': {
'bool': {
'must': [
{
'match_phrase': {
'messageid': 'DEL_1CKCJAR'
}
},
{
'regexp': {
'dsn': '2.[0-9].[0-9]'
}
}
]
}
}
},
{
'type': 1,
'index': 'xyz'
},
{
'query': {
'bool': {
'must': [
{
'match_phrase': {
'messageid': 'DEL_1CKCJAR'
}
},
{
'regexp': {
'dsn': '5.[0-9].[0-9]'
}
}
]
}
}
},
{
'type': 1,
'index': 'xyz'
},
{
'query': {
'bool': {
'must': [
{
'match_phrase': {
'messageid': 'DEL_1CKCJAR'
}
},
{
'regexp': {
'dsn': '4.[0-9].[0-9]'
}
}
]
}
}
}
]
但是,在索引[
{
'took': 42,
'hits': {
'hits': [
],
'total': 0,
'max_score': None
},
'status': 200,
'timed_out': False,
'_shards': {
'failed': 0,
'total': 5,
'successful': 5
}
},
{
'took': 41,
'hits': {
'hits': [
],
'total': 0,
'max_score': None
},
'status': 200,
'timed_out': False,
'_shards': {
'failed': 0,
'total': 5,
'successful': 5
}
},
{
'took': 41,
'hits': {
'hits': [
],
'total': 0,
'max_score': None
},
'status': 200,
'timed_out': False,
'_shards': {
'failed': 0,
'total': 5,
'successful': 5
}
}
]
上单独运行,查询如下:
xyz
返回以下回复:
{
'query': {
'bool': {
'must': [
{
'match_phrase': {
'messageid': 'DEL_1CKCJAR'
}
},
{
'regexp': {
'dsn': '4.[0-9].[0-9]'
}
}
]
}
}
}
,这是所需的响应。到目前为止,我无法弄清楚为什么单个请求有效,但multi_search请求却没有。
注意:正在搜索的数据是Elasticsearch日志数据。
感谢任何帮助。 :)
答案 0 :(得分:0)
我说您的多重搜索查询使用错误的type
:
{
'type': 1,
'index': 'xyz'
}
单个搜索查询返回的文档的类型为log
。要么完全忽略该类型,要么使用log
,您的查询应返回所需的结果。