kev*_*son 6 python elasticsearch
我正在使用Elasticsearch的多搜索来通过python库运行查询列表.它似乎工作......主要是.问题是如果我发送200个查询,它返回100个结果(没有错误).我已尝试运行甚至20个查询,仍然获得10个结果.由于某种原因,似乎总是只返回一半的查询.这也意味着我不知道结果与哪个查询相关.
查询都可以单独工作,但需要的时间太长.在文档中没有提到响应可能不包含相同数量的查询,所以我不知道该去哪里.我已经进入代码,因为python库将让我验证所有查询都被发送,它似乎按预期工作.
感谢您的帮助或推动正确的方向!
编辑:这是我使用的查询的示例.
{
"filter":{
"and":[
{
"not":{
"term":{
"uuid":"60507f9e-01c1-11e5-a369-34363bd16ec4"
}
}
},
{
"term":{
"brand_id":22212
}
}
]
},
"query":{
"bool":{
"minimum_should_match":1,
"should":[
{
"match":{
"name":{
"query":"spork",
"boost":3
}
}
},
{
"match":{
"categories":{
"slop":10,
"type":"phrase",
"query":"household plates, bowls, cups & flatware"
}
}
}
],
"must_not":[
],
"must":[
{
"match":{
"name_analyzed":{
"boost":4,
"query":"spork",
"type":"phrase",
"slop":15
}
}
}
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
我根据python elasticsearch文档创建了一个包含许多查询的列表,我希望按照这些查询运行并执行它们:
elasticsearch.msearch(list_of_search_queries)
Run Code Online (Sandbox Code Playgroud)
kev*_*son 14
呼!这很烦人.
所以搜索和msearch之间的警告是elasticsearch期望每个查询两行.第一行表示索引(如果已经指定,则可以留空),第二行是实际查询.
因此,在创建查询列表时,我只需在它之前附加{},如下所示:
list_of_queries = []
for thing in list_of_things:
list_of_queries.append({})
list_of_queries.append(thing.get_query())
Run Code Online (Sandbox Code Playgroud)
然后它的作品!
| 归档时间: |
|
| 查看次数: |
883 次 |
| 最近记录: |