gpt4 book ai didi

elasticsearch - Elasticsearch 行到列

转载 作者:行者123 更新时间:2023-12-03 02:04:09 26 4
gpt4 key购买 nike

我在ElasticSearch中有这样的文档。我想进行搜索并获得类似sql serverivot的结果。但是我不知道该怎么办。

Name | Year | Gear
C30 2012 A
C30 2011 M
C30 2014 M
C30 2015 A
C30 2013 A
V40 2012 A
V40 2013 M
V40 2015 A
S60 2012 M
S60 2011 A

当我搜索“C30 A”时,我想要显示这样的数据。
Name | Years
C30 2012,2015,2013

我怎样才能做到这一点 ? ES有可能吗?

最佳答案

如果您已经按如下所示索引了数据(这意味着:每个文档都有一个Name,Year和Gear字段),那么正确的查询将为您返回此类型的文档列表。

下面是此类查询的示例(更多选项可用-有关查询dsl的更多信息,请在此处检查-http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl.html)。

"query": {
"bool": {
"must": [
{"match": { "Name": "C30" }},
{"match": { "Gear": "A" }}
]
}
}

如果您想要一个描述的结果,则应在从搜索结果中收到数据后对数据进行一些后期处理。

但是,如果尚未为您的数据建立索引,或者您不希望更改策略,那么我建议对数据进行非规范化,然后以最适合您的形式对其进行索引。
我建议为以下文档编制索引:
public class ObjectToIndex{
public string Name;
public string Gear;
public List<string> Years;
}

您的数据现在看起来像
Name | Gear | Years
C30 A 2012,2015,2013
C30 M 2011,2014
V40 A 2012,2015
V40 M 2013
S60 A 2011
S60 M 2012

在这种情况下,上面的查询将返回如下文档:
C30, A,  2012,2015,2013

关于elasticsearch - Elasticsearch 行到列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28423255/

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