【问题标题】:How can I return all shards when using the Elasticsearch Python API?使用 Elasticsearch Python API 时如何返回所有分片?
【发布时间】:2018-05-08 20:35:40
【问题描述】:

我正在尝试使用 elasticsearch python API 对 ELK 设置运行搜索。似乎默认情况下,搜索仅从索引返回 5 个结果。我该如何配置它以便它可以返回索引中可用的所有分片? kibanna 仪表板显示 900 + 分片,但 API 仅返回 5 个。我目前的代码是:

es = Elasticsearch([{'host': 'localhost', 'port': 9200}])

data = es.search(
    index='scapy'
)

脚本显示的输出(顶部):

{u'_shards': {u'failed': 0, u'skipped': 0, u'successful': 5, u'total': 5},

kibanna 仪表板的屏幕截图:

谢谢!

【问题讨论】:

    标签: python elasticsearch elasticsearch-plugin


    【解决方案1】:

    可选参数大小可设置显示更多结果

    count = es.count(index='scapy')['count']
    data = es.search(index='scapy', size=count)
    

    【讨论】:

      【解决方案2】:

      你一定是在理解结果时弄错了, 结果

      {u'_shards': {u'failed': 0, u'skipped': 0, u'successful': 5, u'total': 5}
      

      表示您的索引“scapy”的数据位于 5 个不同的分片中,您的搜索查询从这 5 个不同的分片中得到结果。
      所以结果一定是这样的:

      {
        "took": 1651,
        "timed_out": false,
        "_shards": {
          "total": 10,
          "successful": 10,
          "skipped": 0,
          "failed": 0
        },
        "hits": {
          "total": 2221327255,
          "max_score": 1,
          "hits": [
            {
              "_index": "test_index",
              "_type": "logs",
              "_id": "BL1E-F8BH3R02gVcxkPc",
              "_score": 1,
              "_source": {
                "deviceType": "4",
                "appVersion": "2.1.1"
              }
            },
            {
              "_index": "test_index",
              "_type": "logs",
              "_id": "Cr1E-F8BH3R02gVcxkPd",
              "_score": 1,
              "_source": {
                "deviceType": "4",
                "appVersion": "2.1.1"
              }
            },
            {
              "_index": "test_index",
              "_type": "logs",
              "_id": "Eb1E-F8BH3R02gVcxkPd",
              "_score": 1,
              "_source": {
                "deviceType": "4",
                "appVersion": "2.1.2"
              }
            },
            {
              "_index": "test_index",
              "_type": "logs",
              "_id": "F71E-F8BH3R02gVcxkPd",
              "_score": 1,
              "_source": {
                "deviceType": "4",
                "appVersion": "2.1.2"
              }
            },
            {
              "_index": "test_index",
              "_type": "logs",
              "_id": "KL1E-F8BH3R02gVcxkPd",
              "_score": 1,
              "_source": {
                "deviceType": "4",
                "appVersion": "2.1.2"
              }
            },
            {
              "_index": "test_index",
              "_type": "logs",
              "_id": "LL1E-F8BH3R02gVcxkPd",
              "_score": 1,
              "_source": {
                "deviceType": "4",
                "appVersion": "2.1.2"
              }
            },
            {
              "_index": "test_index",
              "_type": "logs",
              "_id": "NL1E-F8BH3R02gVcxkPd",
              "_score": 1,
              "_source": {
                "deviceType": "4",
                "appVersion": "2.1.2"
              }
            },
            {
              "_index": "test_index",
              "_type": "logs",
              "_id": "R71E-F8BH3R02gVcxkPd",
              "_score": 1,
              "_source": {
                "deviceType": "4",
                "appVersion": "2.1.2"
              }
            },
            {
              "_index": "test_index",
              "_type": "logs",
              "_id": "Sb1E-F8BH3R02gVcxkPd",
              "_score": 1,
              "_source": {
                "deviceType": "4",
                "appVersion": "2.1.2"
              }
            },
            {
              "_index": "test_index",
              "_type": "logs",
              "_id": "TL1E-F8BH3R02gVcxkPd",
              "_score": 1,
              "_source": {
                "deviceType": "4",
                "appVersion": "2.1.2"
              }
            }
          ]
        }
      }
      

      hits中有10个项目,因为结果返回的默认大小是10,所以你可以在你的查询dsl中设置大小,

      GET /_search
      {
          "from" : 0, "size" : 10,
          "query" : {
              "term" : { "user" : "kimchy" }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-05
        • 2020-08-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-21
        相关资源
        最近更新 更多