Разделить один эластичный поисковый запрос на несколько запросов для оптимизации - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть один эластичный запрос, который я хочу разделить на несколько маленьких запросов.Это один запрос, который получает данные за 30 дней.Что я хочу, так это если я могу сделать 3 отдельных запроса по 10 дней каждый.Идея состоит в том, что возможно Я могу получить данные из ES быстрее, если мы разделим мой запрос на параллелизацию.Я не уверен, если это будет иметь значение или нет, но идея, на которую я обращаюсь, выглядит так:

  "size": 0,
  "query": {
    "bool": {
      "filter": {
        "bool": {
          "filter": [
            {
              "term": {
                "scan.access_level": "public"
              }
            },
            {
              "bool": {
                "should": [
                  {
                    "range": {
                      "tracking.last_found": {
                        "from": "now-30d/d",
                        "to": "now/d",
                        "include_lower": true,
                        "include_upper": true
                      }
                    }
                  },
                  {
                    "range": {
                      "tracking.last_fixed": {
                        "from": "now-30d/d",
                        "to": "now/d",
                        "include_lower": true,
                        "include_upper": true
                      }
                    }
                  },
                  {
                    "bool": {
                      "filter": {
                        "range": {
                          "scan.started_at": {
                            "from": "now-30d/d",
                            "to": "now/d",
                            "include_lower": true,
                            "include_upper": true
                          }
                        }
                      },
                      "must_not": {
                        "exists": {
                          "field": "tracking"
                        }
                      }
                    }
                  }
                ],
                "minimum_should_match": "1"
              }
            }
          ]
        }
      }
    }
  },
  "aggregations": {
    "critical-line": {
      "aggregations": {
        "by_day": {
          "date_histogram": {
            "field": "scan.started_at",
            "interval": "1d",
            "order": {
              "_count": "asc"
            },
            "time_zone": "+05:30"
          },
          "aggregations": {
            "countedHosts": {
              "cardinality": {
                "field": "grouping_keys.summary_id",
                "precision_threshold": 250
              }
            }
          }
        }
      }
    },
    "high-line": {
      "aggregations": {
        "by_day": {
          "date_histogram": {
            "field": "scan.started_at",
            "interval": "1d",
            "order": {
              "_count": "asc"
            },
            "time_zone": "+05:30"
          },
          "aggregations": {
            "countedHosts": {
              "cardinality": {
                "field": "grouping_keys.summary_id",
                "precision_threshold": 250
              }
            }
          }
        }
      }
    },
    "medium-line": {
      "aggregations": {
        "by_day": {
          "date_histogram": {
            "field": "scan.started_at",
            "interval": "1d",
            "order": {
              "_count": "asc"
            },
            "time_zone": "+05:30"
          },
          "aggregations": {
            "countedHosts": {
              "cardinality": {
                "field": "grouping_keys.summary_id",
                "precision_threshold": 250
              }
            }
          }
        }
      }
    },
    "low-line": {
      "aggregations": {
        "by_day": {
          "date_histogram": {
            "field": "scan.started_at",
            "interval": "1d",
            "order": {
              "_count": "asc"
            },
            "time_zone": "+05:30"
          },
          "aggregations": {
            "countedHosts": {
              "cardinality": {
                "field": "grouping_keys.summary_id",
                "precision_threshold": 250
              }
            }
          }
        }
      }
    }
  }
}```

Please let me know how to do the split of single query into multiple queries. 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...