#elasticsearch
#elasticsearch
Вопрос:
Я довольно новичок в elasticsearch, и я пытался выполнять поиск по своим данным и всегда получал раздел «хиты» пустым.Это происходит даже после того, как данные загружены и проиндексированы. Мое отображение выглядит следующим образом:
{
"mappings":{
"type":{
"properties":{
"adoriId":{
"type":"integer"
},
"custom":{
"type":"nested",
"properties":{
"timestamp":{
"type":"text"
},
"value":{
"type":"text"
}
}
}
}
}
}
}
Мне нужно получить соответствующее значение временной метки для искомого текста. Поисковый запрос, который я использую (используя postman)
ПОЛУЧАЕМ http://localhost:9200/transcripts/type/_search
{
"query":{
"match":{
"custom.value":"iTunes to rate review And subscribe"
}
}
}
Любой выполняемый мной поиск возвращает это
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 0,
"max_score": null,
"hits": []
}
}
Ответ №1:
Поле custom
относится к вложенному типу данных, для которого вам нужно использовать вложенный запрос.
Ниже показано, каким должен быть ваш запрос:
GET transcripts/_search
{
"query":{
"nested":{
"path":"custom",
"query":{
"match":{
"custom.value":"iTunes to rate review And subscribe"
}
},
"inner_hits":{}
}
}
}
Комментарии:
1. Большое вам спасибо за помощь! Но как мне получить соответствующее значение временной метки для поиска по фразе?
2. Извините, не могли бы вы привести пример. Вы получаете весь документ в качестве ответа, используя приведенный выше запрос, и в нем должно быть возвращено поле
timestamp
(которое должно бытьdate
типом данных вместо этого, а неtext
).3. @SiddeshwarRaghavan я добавил
inner_hits
к запросу. Дайте мне знать, если это то, что вы ищете.4. Да, inner_hits — это то, что я искал. Спасибо за вашу помощь.