这是一种多对多查询。我想在一个查询中合并多个搜索字符串,并希望得到每个字符串的命中计数。例如:“苹果”、“橙子”、“菠萝”我要他们每个人的人数。目前,我已经写了OR查询,但这违背了目的。OR查询结合了一切,命中计数是所有搜索字符串的累积,但我想要一个命中计数专门为每个搜索字符串。
6yt4nkrj1#
Elasticsearch不是一个关系数据库,试图实现RDBMS行为最终注定会失败。但话虽如此,如果你只是想计算一系列terms的数量,你应该研究一下elasticsearch的aggregation feature。如果您确实想执行搜索查询,可以尝试使用msearchapi,它允许您使用单个调用向elasticsearch发送多个查询。
terms
GET <index name>/_search { "size": 0, "query": { "terms": { "fruits": [ "Apple", "Orange", ... ] } }, "aggs": { "NAME": { "terms": { "field": "fruits", "size": 10 } } } }
GET <index name>/_msearch { } {"query": {"terms": {"fruits": ["Apple"]}}} {} {"query": {"terms": {"fruits": ["Orange"]}}} ...
1条答案
按热度按时间6yt4nkrj1#
Tldr;
Elasticsearch不是一个关系数据库,试图实现RDBMS行为最终注定会失败。
但话虽如此,如果你只是想计算一系列
terms
的数量,你应该研究一下elasticsearch的aggregation feature。如果您确实想执行搜索查询,可以尝试使用msearchapi,它允许您使用单个调用向elasticsearch发送多个查询。
溶液(聚合物)
解决方案(msearch)