#elasticsearch
#elasticsearch
Вопрос:
У меня есть кластер elasticsearch с 3 индексами:
/users/user
/events/visit
/events/register
/pages/page
Итак, теперь мне нужно запускать запросы, обрабатывающие несколько индексов.
Например: получить пол пользователей, зарегистрированных на странице X. (Чтобы получить эту информацию, мне нужна информация из нескольких индексов.)
Возможно ли это? Может быть, интеграция hadoop?
Ответ №1:
Это довольно просто в самом Elasticsearch! В любое время, когда вы хотите указать индекс, вы можете разделять дополнительные индексы запятой.
curl -XGET 'http://localhost:9200/index1,index2/_search?q=yourQueryHere'
Вы также можете выполнить поиск по всем индексам с помощью _all .
curl -XGET 'http://localhost:9200/_all/_search?q=yourQueryHere'
Вот несколько полезных документов с веб-сайта elasticsearch. На этом сайте много информации, но иногда ее немного сложно найти, IMO.
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-search.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-index.html
Комментарии:
1. Я нашел информацию о том, что _all будет устаревшим ( elastic.co/guide/en/elasticsearch/reference/current /… ) , но я не уверен, что у эластичного поиска есть несколько применений для «_all», так что, возможно, это подделка new: D, пожалуйста, обновите свой ответ @brian-mego если вы что-то знаете об этом
2. можем ли мы сделать это для диапазона дат, такого как CURL -XGET ‘ localhost:9200/index_2018-12- {15-25}/_search’ означает, что я хотел выбрать только данные из индекса от 15 до 25, не более, иначе у меня есть индекс для каждого дня.
3. @IndrajeetGour, в документе » Соглашения для нескольких индексов » говорится, что он поддерживает подстановочные знаки, такие как
*
и-
, но в нем не упоминается диапазон4. вы можете создать псевдоним и привязать к нему все индексы. запросите псевдоним и получите все соответствующие документы.
5. @Brian Можем ли мы ограничить результат на основе индекса. Предположим, нам нужны 5 лучших результатов по индексу1 и 5 лучших результатов по индексу2. Можем ли мы достичь этого с помощью эластичного поиска?
Ответ №2:
Не ограничивая наш поиск определенным индексом или типом, мы выполнили поиск по всем документам в кластере. Elasticsearch перенаправил запрос поиска параллельно основному или реплике каждого сегмента в кластере.
1)/users,events,pages/_search : Search all types in the users,events and pages
2)/u*,e*,p*/_search : Search all types in any indices beginning with u,e or beginning with p
3)/events/visit,register/_search : Search types visit and register in the events index
4) /_all/user,visit,register,page/_search : Search types users,events and pages in specified indices
Ответ №3:
Можно выполнить поисковый запрос по нескольким индексам:
например:
curl -X POST
'http://localhost:9200/test1,test2/_search?pretty='
-H 'Content-Type: application/json' -d '{
"query": {
...
}
}
'