2016-10-01 1 views
0

Я новичок в Elastic Search и использую ES в своем приложении. Когда я запускаю простой запрос в отдельной таблице на ES, тогда это рабочий файл. Но когда я использую вложенный запрос, это не дает мне правильного результата.Elastic Search: parse_exception: не удалось проанализировать источник поиска. ожидаемое имя поля, но получил [START_OBJECT]

В принципе, у меня есть две таблицы people и interactions обе являются отдельными таблицами. В таблице взаимодействия есть person_id, которые ссылаются на идентификатор таблицы people. и я хочу получить такое взаимодействие людей, у которых есть user_id: 2. Когда я создаю условие и запускаю запрос, я получаю ошибку.

Ниже приводится мой запрос, который я выполняю.

{ 
    "index": "my_index", 
    "type": "people", 
    "fields": "_source,_timestamp", 
    "size": 10, 
    "from": 0, 
    "body": { 
    "query": { 
     "bool": { 
     "should": { 
      "wildcard": { 
      "_all": "*a*" 
      } 
     } 
     }, 
     "nested": { 
     "path": "interactions", 
     "query": { 
      "bool": { 
      "should": { 
       "match": { 
       "interactions.user_id": 2 
       } 
      } 
      } 
     } 
     } 
    }, 
    "sort": [ 
     { 
     "last_name": { 
      "order": "asc" 
     } 
     } 
    ] 
    } 
} 

Ниже ответ, который я получаю

{ 
    "status": false, 
    "error_code": 657, 
    "errors": [ 
    "parse_exception: failed to parse search source. expected field name but got [START_OBJECT]" 
    ] 
} 

Ниже приведены данные, которые мы индекс в ES

Люди

[ 
    { 
     "id": 1, 
     "first_name": "Test1", 
     "last_name": "Data1", 
     "date_of_birth": "1988-11-02", 
     "created_at": ".......", 
     "updated_at": ".......", 
     "status": 1, 
     "prefix": "Ms.", 
     "suffix": "MD" 
    }, 
    { 
     "id": 1, 
     "first_name": "Test2", 
     "last_name": "Data2", 
     "date_of_birth": "1988-11-02", 
     "created_at": ".......", 
     "updated_at": ".......", 
     "status": 1, 
     "prefix": "Ms.", 
     "suffix": "MD" 
    } 
] 

взаимодействий

[ 
    { 
     "id": 1, 
     "user_id": 11, 
     "person_id": 6, 
     "interaction_type": 1, 
     "initiated_by": 2, 
     "created_at": ".......", 
     "updated_at": "......." 
    }, 
    { 
     "id": 2, 
     "user_id": 10, 
     "person_id": 5, 
     .......... 
    } 
] 

Может ли кто-нибудь предложить мне, что я делаю неправильно в этом запросе? Спасибо заранее.

+0

Вы можете показать отображение для своего индекса и образца документа – blackmamba

+0

@blackmamba Я обновил свой вопрос с помощью примера преобразования индекса. Пожалуйста, предложите мне, как я могу решить свою проблему. –

ответ

1

Обновленный ответ. Попробуйте это.

{ 
    "fields" : "_source,_timestamp", 
    "size" : 10, 
    "from" : 0, 
    "query" : { 
     "bool" : { 
      "should" : [{ 
        "wildcard" : { 
         "_all" : "*a*" 
        } 
       }, { 
        "nested" : { 
         "path" : "interactions", 
         "query" : { 
          "bool" : { 
           "should" : { 
            "match" : { 
             "interactions.user_id" : 2 
            } 
           } 
          } 
         } 
        } 
       } 
      ] 
     } 
    }, 
    "sort" : [{ 
      "last_name" : { 
       "order" : "asc" 
      } 
     } 
    ] 
} 

Ваш json был искажен. Вам не хватало «] для сортировки. Попробуйте ниже

Вы можете использовать сайт, например http://jsonlint.com/, для проверки jsons.

{ 
    "index": "my_index", 
    "type": "people", 
    "fields": "_source,_timestamp", 
    "size": 10, 
    "from": 0, 
    "body": { 
     "query": { 
      "bool": { 
       "should": { 
        "wildcard": { 
         "_all": "*a*" 
        } 
       } 
      }, 
      "nested": { 
       "path": "interactions", 
       "query": { 
        "bool": { 
         "should": { 
          "match": { 
           "interactions.user_id": 2 
          } 
         } 
        } 
       } 
      } 
     }, 
     "sort": [{ 
      "last_name": { 
       "order": "asc" 
      } 
     }] 
    } 
} 
+0

@ lucky-saini попробуйте обновленный ответ. – jay

Смежные вопросы