python - Elasticsearch 多搜索未返回正确数量的结果

标签 python elasticsearch

我正在使用 Elasticsearch 的 multi search通过 python library 运行查询列表.它似乎在工作......主要是。问题是,如果我发送 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
                  }
               }
            }
         ]
      }
   }
}

根据 python elasticsearch 文档,我创建了一个列表,其中包含许多我想运行和执行的此类查询:

elasticsearch.msearch(list_of_search_queries)

最佳答案

哇!那很烦人。

所以 search 和 msearch 之间的警告是 elasticsearch 期望每个查询有两行。第一行表示索引(如果您已经指定它可以留空),第二行是您的实际查询。

因此,在创建我的查询列表时,我只是将 {} 附加在它之前:

list_of_queries = []
for thing in list_of_things:
    list_of_queries.append({})
    list_of_queries.append(thing.get_query())

然后就可以了!

关于python - Elasticsearch 多搜索未返回正确数量的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31977040/

相关文章:

javascript - 使用 Node JS 客户端从 Elasticsearch 索引中提取最重要的单词

kibana-4 - 在Elasticsearch中对正斜杠使用数据聚合

python - 在更新值时扩展 numpy 数组

python - 我该如何修复 'failed to find geo_point field [pin.location]'

python - Pickle: AttributeError: 'module' 对象没有属性

Python:如何在遇到超时时重试

python - 不同计算机上多个用户的本地服务器地址? (Python)

elasticsearch - 在批量索引期间检测更改

elasticsearch - 弹性架构错误 - 根映射定义具有不受支持的参数

elasticsearch - Elasticsearch堆被填充以进行简单搜索