弹性搜索无法获取python代码中的所有文档

时间:2019-06-09 19:00:14

标签: python python-3.x python-2.7 elasticsearch

我有一个弹性搜索单节点集群,它有一些索引。该索引包含6000个或更多文档。文档映射有很多字段(例如30个或更多)。我可以在(Kibana dev tool)中查询所有重复记录但是我正在查询python结果,例如10条记录或20条记录。这是什么原因?

我的索引和文档计数

yellow open   test_index kjioInpQRAqT3o1LZHI92g   1   2       7652         1267      20.7mb          20.7mb

我的映射

{
 "settings": {
  "number_of_shards": 1,
  "number_of_replicas": 2 
 },

 "mappings": {
  "test_index" : {
    "properties": {
        "name": {
            "type": "keyword"
        },
        "address": {
            "type": "keyword"
        },
        # MORE 35 FIELDS ....
        }
      }
   }
}

1 个答案:

答案 0 :(得分:0)

我找到了原因。文档有很多字段,它有35个字段。我可以在(kibana dev)工具中查询。一次查询返回了1000个文档.Python弹性搜索库无法获得此文档数量的原因是单个文档太大(文档有35个字段)。然后我更改查询并将查询结果的有用字段放入。现在是工作文件。

像这样更改您的查询(普通查询)

`{
   "_source": ["_id","_index", "quote_date", "asset"],
   "query": {
       "match_all": {
       }
   }
}`

像这样更改您的查询(聚合查询)

` "aggs": {        
  "duplicateDocuments": {        
     "top_hits": {
        "_source": ["_id","_index", "name", "address"],
                    "sort": [{"create_at": { "order": "desc"} } ]                                                                                                                                
                }
            }
   }`