gpt4 book ai didi

elasticsearch - 在 elastica 中搜索多个索引

转载 作者:行者123 更新时间:2023-11-29 02:53:02 24 4
gpt4 key购买 nike

我正在寻找一种使用 Elastica 同时搜索多个索引的方法。

我有一个索引 products 和一个索引 user

products 包含 {product_id, product_name, price}user 包含 {product_id, user_name, date} .知道两者中的 product_id 是相同的,在 products 中每个 products_id 都是唯一的,但在 user 中它们'不是因为用户可以多次购买同一产品。

无论如何,我想在搜索 user 索引时自动从 products 索引中获取产品的价格。

我知道我们可以像这样搜索多个索引(如果我错了请纠正我):

$search = new \Elastica\Search($client);
$search->addIndex('users')
->addType('user')
->addIndex('products')
->addType('product');

但问题是,例如,当我在 products_id 上编写一个聚合,然后使用一些过滤器创建一个新查询时:

$products_agg = new \Elastica\Aggregation\Terms('products_id');
$products_agg->setField('products_id')->setSize(0);

$query = new \Elastica\Query();
$query->addAggregation($products_agg);
$query->setQuery($bool);

$search->setQuery($query);

elastica 如何知道在哪个索引中搜索?如何将此 products_id 链接到其他索引?

最佳答案

Elastica 库支持多搜索 API,multi search API允许在同一 API 中执行多个搜索请求。它的端点是 _msearch

请求的格式类似于批量API,第一行 是标题部分,包括要搜索的索引,第二行包括典型的搜索正文请求。

{"index" : "products", "type": "products"}
{"query" : {"match_all" : {}}, "from" : 0, "size" : 10} // write your own query to get price
{"index" : "uesrs", "type" : "user"}
{"query" : {"match_all" : {}}} // query for user

检查Multi/SearchTest.php中的测试用例看看如何使用。

关于elasticsearch - 在 elastica 中搜索多个索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52742044/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com