我有一个包含3个索引的elasticsearch集群:
/users/user
/events/visit
/events/register
/pages/page
所以,现在我需要运行处理多个索引的查询。
例如:获取在第X页中注册的用户的性别。 (要获取此信息,我需要来自多个索引的信息。)
这可能吗?也许整合hadoop?
答案 0 :(得分:31)
这在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 :(得分:5)
通过不将搜索限制为特定索引或类型,我们搜索了群集中的所有文档。 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
答案 2 :(得分:1)
可以通过多个索引进行搜索查询:
例如:
curl -X POST \
'http://localhost:9200/test1,test2/_search?pretty=' \
-H 'Content-Type: application/json' -d '{
"query": {
...
}
}
'