Ошибка Elasticsearch: [parsing_exception] [match_phrase] запрос не поддерживает [first_name] - PullRequest
1 голос
/ 11 октября 2019

У меня проблема с модулем упругости поиска npm. Вот мой запрос:

try {
    const {
        hits: { hits }
    } = await client.search({
        index: "articles",
        body: {
            query: {
                match_phrase: {
                    authors: {
                        first_name: firstName,
                        last_name: lastName
                    }
                }
            }
        }
    });

    hits.forEach(hit => {
        hit.type = TYPE_PHRASE;
    });

    return hits;
} catch (err) {

Но это возвращает ошибку,

Error: [parsing_exception] [match_phrase] query does not support [first_name]

Я не уверен, что это значит ... означает ли это, что я не могу искать по first_name?

Вот структура упругого поиска:

 [
      {
           "_score": 10.8702135,
           "_source": {
                "title": "Some title",
                "authors": [
                     {
                          "first_name": "John",
                          "last_name": "Smith",
                     },
                     {
                          "first_name": "Jane",
                          "last_name": "Doe",
                     },

Ответы [ 2 ]

2 голосов
/ 12 октября 2019

Match_phrase работает на одном поле. Для поиска по нескольким полям объедините несколько предложений match_phrase, используя предложение must / bool.

query: {
          bool: {
                     must: [
                               {
                                   match_phrase: {
                                                   authors.first_name: firstName
                                                 }                  
                                },
                                {
                                   match_phrase: {
                                                   authors.last_name: lastName
                                                 }                  
                                },
                            ]
                 }                
            }
0 голосов
/ 13 октября 2019

Вы также можете создать объекты имени и фамилии как вложенный объект. Это поможет вам правильно искать имя и фамилию.

Более подробную информацию об этой и почти аналогичной проблеме можно найти в https://www.elastic.co/guide/en/elasticsearch/reference/current/nested.html

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