Elasticsearch mtermvectors python API-запрос - PullRequest
1 голос
/ 19 апреля 2020

В настоящее время я работаю над Elasticsearch с огромным количеством документов (около 500 КБ) в индексе. Я хочу хранить n-граммы текстовых данных каждого документа (это также огромно ~ per do c содержит 2 страницы текстовых данных) в другом индексе. Поэтому я рассчитал векторы терминов и их количество в каждом документе, чтобы сохранить их в новом индексе. Таким образом, я могу выполнить запросы агрегации для нового индекса.

Установка старого индекса позволила мне выполнить termvector и mtermvector API. Я не хочу отправлять слишком много запросов на сервер Elasticsearch за короткое время, поэтому я использую mtermvectors python API. Я пытаюсь получить термины-векторы 25 документов, передавая идентификаторы 25 документов.

Пример HTTP-URL после вызова API mtermvector в python

http://*servername*/elastic/*indexname*/article/_mtermvectors?offsets=false&fields=plain_text&ids=608467%2C608469%2C608473%2C608475%2C608477%2C608482%2C608485%2C608492%2C608498%2C608504%2C608509%2C608511%2C608520%2C608522%2C608528%2C608530%2C608541%2C608549%2C608562%2C608570%2C608573%2C608576%2C608577%2C608579%2C608585&field_statistics=true&term_statistics=true&payloads=false&positions=false

Иногда я получаю ожидаемый ответ, но в большинстве случаев я получаю следующую ошибку:

Proxy Error
The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /elastic/*indexname*/article/_mtermvectors.

Reason: Error reading from remote server

Установка и отображение индекса

{
  "settings": {
    "analysis": {
      "analyzer": {
        "shingleAnalyzer": {
          "tokenizer": "letter_tokenizer",
          "filter": [
            "lowercase",
            "custom_stop",
            "custom_shingle",
            "custom_stemmer",
            "length_filter"
          ]
        }
      },
      "filter": {
        "custom_stemmer": {
          "type": "stemmer",
          "name": "english"
        },
        "custom_stop": {
          "type": "stop",
          "stopwords": "_english_"
        },
        "custom_shingle": {
          "type": "shingle",
          "min_shingle_size": "2",
          "max_shingle_size": "4",
          "filler_token":""
        },
        "length_filter": {
          "type": "length",
          "min": 2
        }
      },
      "tokenizer": {
        "letter_tokenizer": {
          "type": "letter"
        }
      }
    }
  },
  "mappings": {
    "properties": {"article_id":{"type": "text"},
      "plain_text": {
        "term_vector": "with_positions_offsets_payloads",
        "store": true,
        "analyzer": "shingleAnalyzer",
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      }
    }
  }
}

Я не думаю, что есть какие-либо проблемы с этим настройка и отображение, как иногда я получаю ожидаемый ответ.

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация с моей стороны. Любая помощь будет оценена.

...