Как получить все результаты запроса вложенного типа данных в Elasticsearch? - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь получить все подходящие предложения из большого количества текста, используя вложенный тип данных Elasticsearch.В запросе, упомянутом ниже, я пытаюсь отфильтровать все предложения, в которых «и» указаны в одном предложении.

GET myindex/doc/_search
{
  "from": 0,
  "size": 1,
  "query": {
    "nested": {
      "path": "parent.data",
      "query": {
        "bool": {
          "filter": [
            {
              "match": {
                "parent.data.sentence": "the"
              }
            },
            {
              "match": {
                "parent.data.sentence": "of"
              }
            }
          ]
        }
      },
      "inner_hits": {}
    }
  }
}

Хотя в приведенном ниже ответе показано, что в общей сложности 544 документа, ES показывает только три из них.Как я могу получить их все?

{
  "took": 709,
  "timed_out": false,
  "_shards": {
    "total": 6,
    "successful": 6,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 73783,
    "max_score": 0,
    "hits": [
      {
        "_index": "my-index",
        "_type": "doc",
        "_id": "bd9e3c03741956db68fd692a6914e811b0749baaf6565c6385380919f1ce3932",
        "_score": 0,
        "_source": {},
        "inner_hits": {
          "parent.data.sentence": {
            "hits": {
              "total": 544,
              "max_score": 0,
              "hits": [<response containing 3 sentence>],
          }
        }
      }
    ]
  }
}

1 Ответ

1 голос
/ 25 июня 2019

Вы можете использовать опции from и size , чтобы получить желаемое количество внутренних попаданий в ответ. По умолчанию size равно 3 для внутренних попаданий. Чтобы увеличить его до 20, вы можете обновить свой запрос, как показано ниже:

GET myindex/doc/_search
{
  "from": 0,
  "size": 1,
  "query": {
    "nested": {
      "path": "parent.data",
      "query": {
        "bool": {
          "filter": [
            {
              "match": {
                "parent.data.sentence": "the"
              }
            },
            {
              "match": {
                "parent.data.sentence": "of"
              }
            }
          ]
        }
      },
      "inner_hits": {
        "size": 20
      }
    }
  }
}

Я бы посоветовал вам использовать комбинацию from и size, если не все записи должны быть извлечены одновременно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...