Результаты родительского-дочернего запроса ElasticSearch не соответствуют ожидания - PullRequest
0 голосов
/ 16 ноября 2018

Я создаю Индексирование родителей и детей, родительский документ хранит основную информацию о пользователе, а дочерний документ хранит информацию для входа в систему.

Как запросить информацию о пользователях старше 18 лет, которые вошли в систему более 5 раз за период с 2018-01-01 по 2018-01-10?

PUT merit_parent/merit_mapping/1
{
  "name": "test1",
  "sex": "female",
  "age": 18
}
PUT merit_parent/merit_mapping/2
{
  "name": "test2",
  "sex": "male",
  "age": 20
}

PUT merit_parent/child_mapping/1?parent=1
{
  "str_id": "1",
  "str_pid": "1",
  "double_date": 20180101,
  "double_loginNum": 2
}
PUT merit_parent/child_mapping/2?parent=1
{
  "str_id": "2",
  "str_pid": "1",
  "double_date": 20180102,
  "double_loginNum": 2
}
PUT merit_parent/child_mapping/3?parent=2
{
  "str_id": "3",
  "str_pid": "2",
  "double_date": 20180101,
  "double_loginNum": 10
}

Мой запрос

{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "sex": "male"
          }
        },
        {
          "has_child": {
            "type": "child_mapping",
            "query": {
              "bool": {
                "must": [
                  {
                    "range": {
                      "double_date": {
                        "gte": "20180101",
                        "lte": "20180110"
                      }
                    }
                  }
                ]
              }
            }
          }
        }
      ]
    }
  },
  "aggs": {
    "child": {
      "children": {
        "type": "child_mapping"
      },
      "aggs": {
        "ipo_year": {
          "terms": {
            "field": "str_pid",
            "size": 0
          },
          "aggs": {
            "login_num": {
              "sum": {
                "field": "double_loginNum"
              }
            },
            "having": {
              "bucket_selector": {
                "buckets_path": {
                  "count": "login_num"
                },
                "script": {
                  "lang": "expression",
                  "inline": "count>10"
                }
              }
            }
          }
        }
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...