Запрос Elasticsearch, использующий поле more_like_this, визуализирует ошибку при анализе источника поиска.ожидаемое имя поля, но получена ошибка [START_OBJECT] - PullRequest
0 голосов
/ 14 ноября 2018

Мы используем Elasticsearch 2.4.5. Есть приложение, которое может генерировать довольно сложные запросы. Я пытаюсь добавить поле more_like_this к запросу следующим образом:

{
  "query": {
    "more_like_this": {
      "fields": [
        "title"
      ],
      "ids": [
        1234
      ],
      "min_term_freq": 1,
      "max_query_terms": 25
    },
    "function_score": {
      "query": {
        "bool": {
          "must": [
            {
              "query_string": {
                "default_operator": "AND",
                "fields": [
                  "title",
                  "author"
                ],
                "query": "((title:(\"Tale of Two Cities\"^2)))",
                "lenient": true
              }
            }
          ],
          "filter": {
            "bool": {
              "must": [
                {
                  "bool": {
                    "should": [
                      {
                        "geo_distance": {
                          "distance": "50mi",
                          "location": {
                            "lat": 49.32,
                            "lon": -45.67
                          },
                          "distance_type": "plane",
                          "_cache": true
                        }
                      }
                    ]
                  }
                },
                {
                  "term": {
                    "merged": 0
                  }
                },
                {
                  "bool": {
                    "must_not": {
                      "exists": {
                        "field": "title_type"
                      }
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "functions": [
        {
          "field_value_factor": {
            "field": "quality_score",
            "factor": 1,
            "missing": 0
          }
        }
      ]
    }
  },
  "filter": {
    "bool": {
      "must": []
    }
  },
  "sort": "_score",
  "size": 20,
  "from": 0
}

Я получаю ошибку failed to parse search source. expected field name but got [START_OBJECT] при попытке запустить приведенный выше код. Когда я удаляю этот кусок кода, запрос выполняется правильно. Я просмотрел документацию и другие примеры использования more_like_this и не могу определить, что не так с моим запросом. Я предполагаю, что это как-то связано с тем, как формируется остальная часть запроса.

...