我遇到了需要从多个索引(产品和用户)中进行搜索的情况。下面是我用来进行搜索的一个示例查询
http://localhost:9200/_all/_search?q=*wood*
http://localhost:9200/users,products/_search?q=*wood*
对于上述接口请求,它只返回产品索引的搜索结果。但如果我使用下面的API进行搜索,它会返回用户索引的搜索结果
http://localhost:9200/users/_search?q=*wood*
如您所见,我为“q”参数传递了相同的值。我需要同时搜索产品和用户索引,并检查在这两个索引的任何属性中是否有单词“wood”。我怎样才能做到这一点?
1条答案
按热度按时间c9qzyr3d1#
您可以传递多个索引名而不是
_all
,因为它将通过使用逗号分隔的索引名来搜索您不想要的其他索引,例如虽然
_all
也应该从users
索引中提取结果,当您指定其名称时,您需要调试为什么会发生这种情况,可能会将size
参数增加到1000,因为默认情况下Elasticearch只返回10个结果,而且在_all
的情况下,似乎所有排名靠前的结果都只来自products
索引。