如何在 ElasticSearch NEST 上查询,基于最终用户选择返回的表列

问题描述

背景:

我正在绘制一个 HighCharts HeatMap,它需要数据格式为 -- x,y,value。

“值”部分来自 Elasticsearch 及其“Id”,我有一个工作查询,其中“值”是 ES 表中的一个固定列,只是说是固定的,因为它基于类/模型(不是动态的吗?)。请看我的代码

型号:

[ElasticsearchType]
public class waf_data
{
    [Text(Name = "PAR_ID")]
    public string Id { get; set; }
    
    [Text(Name ="[CAT2].PAR1")] // <-- this right here is an actual column name
    public string Param { get; set; }
}

控制器:

public JsonResult esSearch(string query)  // <-- sample query = 01A01
{
   ISearchResponse<waf_data> results;
   results = _client.Search<waf_data>(s => s
             .Index("bigtable")
                .Query(q => q
                   .Match(t => t
                      .Field(f => f.Id)
                      .Query(query)
                   )
                )
             .Size(100000)
   );
   var lst_data = results.Documents.ToList<waf_data>();
   
   return Json(lst_data);
}

现在通过操作这些数据,我可以将“值”附加到热图的 x,y 地址。请参阅示例表:

x,value <-- based on my class/model I can get data from "[CAT2].PAR1" column
47,11,123.7
48,456.5
49,789.3

现在,我的问题是我的桌子上有许多可用的列(大约 5k)按类别分组

示例表

PAR_ID | [CAT1].PAR1 | [CAT1].PAR2 | [CAT2].PAR1 | [CAT2].PAR2 .. [CATn].PARn
-----------------------------------------------------------------------------
01A01  | 0.123       | 987.1       | 123.7       | 1.987       .. nnn.n
01A01  | 0.456       | 654.1       | 456.5       | 1.654       .. nnn.n
01A01  | 0.789       | 321.1       | 789.3       | 1.321       .. nnn.n
:::::  | :::::       | :::::       | :::::       | :::::       .. :::::
99Z99  | 0.159       | 975.1       | 531.8       | 6.357       .. nnn.n

并且最终用户应该可以自由选择下一步需要绘制哪个列以进行可视化分析。所以我希望有可能而不是在类/模型上放置一个固定的列名

[Text(Name ="[CAT2].PAR1")] // <-- this right here is an actual column name
public string Param { get; set; }

我如何能够在 ES nesT 的查询部分中指明特定的列名..?

results = _client.Search<waf_data>(s => s
         .Index("bigtable")
            .Query(q => q
               .Match(t => t
                  .Field(f => f.Id)
                  .Query(query)
               ),q => q
               .Match( "SPECFC_TABL_COL_NAME" <-- How to do..? i.e. [CAT1].PAR1
            )
         .Size(100000)
);

或者有其他方法可以做到吗..?

非常感谢您提前!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...