У меня есть документ, проиндексированный вasticsearch:
{
"content":"Some content with @someone mention",
"mentions":["someone"],
"userId":"4dff31eaf8815f4df04e2d62"
}
Я пытаюсь найти его с помощью запроса:
{
"query": {
"filtered": {
"filter": { "term":{"userId":"4dff31eaf8815f4df04e2d62"} },
"query": {
term: {"mentions":"someone"}
}
}
}
}
и не получаю результатов.
Вв то же время запрос контента работает нормально:
{
"query": {
"filtered": {
"filter": { "term":{"userId":"4dff31eaf8815f4df04e2d62"} },
"query": {
"term": {"content":"some"}
}
}
}
}
Требуется ли какой-то особый синтаксис для поиска по массивам?Я нашел несколько тем [ 1 , 2 ] о массивах вasticsearch, но прямого ответа нет.
UPD Get Mapping возвращает вызовследующий результат:
{
"records": {
"all":{
"properties":{
"content":{"type":"string"},
"userId":{"type":"string"},
"mentions":{"type":"string"}
}
}
}
}
UPD2 Я нашел источник проблемы.Я случайно ввел ошибку в свой вопрос.Имя пользователя, которое я на самом деле имел в БД, было в форме "some_one" (подчеркивание является значительным).Таким образом, стандартный индекс разделил его на 2 слова и запросил «some_one» причины сбоя.