ElasticSearch -一次调用多个查询(有子限制)

acruukt9  于 2022-11-22  发布在  ElasticSearch
关注(0)|答案(1)|浏览(168)

我有一个问题与ElasticSearch,我需要你:)
今天我有一个索引,其中有我的文档。这些文档代表ProductsCategories
其结构如下:

{
    "_index": "documents-XXXX",
    "_type": "_doc",
    "_id": "cat-31",
    "_score": 1.0,
    "_source": {
        "title": "Category A",
        "type": "category",
        "uniqId": "cat-31",
        [...]
    }
},
{
    "_index": "documents-XXXX",
    "_type": "_doc",
    "_id": "prod-1",
    "_score": 1.0,
    "_source": {
        "title": "Product 1",
        "type": "product",
        "uniqId": "prod-1",
        [...]
    }
},

我想做的是,在一个电话,是:

  • 有5个文档的类型是“产品”,2个文档的类型是“类别”。你认为这可能吗?

也就是说,一次呼叫中的两个查询具有查询层级限制。
另外,创建两个不同的索引,一个用于products,另一个用于categories,不是更好吗?如果是这样,我有同样的问题,如何在一个调用中同时执行两个查询?
先谢了

rn0zuynd

rn0zuynd1#

如果产品和类别是不同的上下文,我会尝试将它们分为不同的索引。您是否在所有查询中使用此类型来筛选结果?例如:我想在带有product类型的文档中搜索术语xpto,还是不应用任何筛选器进行搜索?
关于你的另一个问题,你可以在一个请求中应用两个查询。Multi search API可以帮助你解决这个问题。
您将有两个答案,每个查询一个。

GET my-index-000001/_msearch
{ }
{"query": { "term": { "type": { "value": "product" } }}}
{"index": "my-index-000001"}
{"query": { "term": { "type": { "value": "category" } }}}

相关问题