c# - Elasticsearch-计算数组中(不可预测的)字符串的出现

标签 c# elasticsearch elasticsearch-net

说我有一个包含以下元素的数据库:

{
    "elmName" : "elm1",
    "arrayOfStrings" : [ "str1", "str4", "str2"]
},
{
    "elmName" : "elm2",
    "arrayOfStrings" : ["str4", "str3"]
},
{
    "elmName" : "elm3",
    "arrayOfStrings" : [ "str1"]
},
{
    "elmName" : "elm4",
    "arrayOfStrings" : []
}

“arrayOfStrings”中的字符串是随机的,并且在搜索时未知。
如何查询“arrayOfStrings”下所有唯一元素的计数,例如:
{
"str4" : 2,
"str2" : 1,
"str1" : 2,
"str3" : 1}

谢谢!

最佳答案

您可以使用LINQ将所有子列表展平为一个,然后按键分组并计算出现次数:

 ListOfObjects.SelectMany(x => x.arrayOfStrings).GroupBy(x => x).Select(x => new KeyValuePair<string, int>(x.Key, x.Count()))

ElasticLinq

关于c# - Elasticsearch-计算数组中(不可预测的)字符串的出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45800001/

相关文章:

.net - ElasticSearch Nest - 仅使用索引名进行查询

elasticsearch - 将二进制类型与 NEST (elasticsearch) 一起使用

c# - 我在哪里可以找到一些 "humanized"C# 教程?

c# - 创建问题 Jira REST API(400 错误请求)

c# - 在 C# 和 NodeJS 中生成 PBKDF2 key

javascript - Elasticsearch 日期数学问题,不确定范围

elasticsearch - Elasticsearch发布荧光笔返回太多句子

c# - vtables是如何在c++和c#中实现的?

jdbc - Elasticsearch JDBC River吞噬了整个内存

elasticsearch - 如何为Elasticsearch Nest使用两个并行聚合