поисковый запрос elasticsearch возвращает пустые «хиты»

#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 — это то, что я искал. Спасибо за вашу помощь.