Эластичный поисковый фильтр для отдельных категорий - PullRequest
0 голосов
/ 14 ноября 2018

Я сделал простое сопоставление с тремя полями, и я анализирую одно поле, которое является типом текста, а другие поля являются типом ключевого слова. пример

fields: Category_one, Category_two, Category_three. 

Сейчас я ищу документы.

Get _search/cat
    {
    "size": 4,
      "query": {
        "match": {
          "Category_one.ngrams": {
            "query": "Nice food place in XYZ location",
            "analyzer": "standard"
          }
        },
        "aggs":{
            "distincr_values":{
                "terms": {
                    "fields" : "Category_two"
                }
            }
        }
      }
    }

Это показывает эту ошибку

{
    "error": {
        "root_cause": [
            {
                "type": "parsing_exception",
                "reason": "[match] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
                "line": 10,
                "col": 5
            }
        ],
        "type": "parsing_exception",
        "reason": "[match] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
        "line": 10,
        "col": 5
    },
    "status": 400
}

Пожалуйста, помогите мне с этой ошибкой. Мой основной мотив - найти отдельные поиски по полю Category_two.

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 14 ноября 2018

Я полагаю, вы получаете эту ошибку из-за структуры вашего запроса.Ключевое слово агрегации должно находиться вне (того же уровня, что и) запрос.В данный момент ваши агги заключены в запросе.

Следуя этой структуре:

Get _search/cat
    {
    "size": 4,
      "query": {
             'query goes here'
       },
       "aggs":{
           'aggregation go here' 
      }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...