У меня есть документ, проиндексированный в elasticsearch:
{
"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 ] о массивах в elasticsearch, но прямого ответа нет.
UPD Вызов Get Mapping возвращает следующий результат:
{
"records": {
"all":{
"properties":{
"content":{"type":"string"},
"userId":{"type":"string"},
"mentions":{"type":"string"}
}
}
}
}
UPD2 Я нашел источник проблемы. Я случайно ввел ошибку в свой вопрос. Имя пользователя, которое у меня было в БД, было в форме «some_one» (подчеркивание имеет значение). Таким образом, стандартный индекс разделил его на 2 слова и запрос "some_one" по причине сбоя.