Elasticsearch 不同的过滤器值

2024-01-15

我在 elasticsearch 中有一个大型文档存储,并且想要检索不同的过滤器值以显示在 HTML 下拉列表中。

一个例子是这样的


[
    {
        "name": "John Doe",
        "deparments": [
            {
                "name": "Accounts"
            },
            {
                "name": "Management"
            }
        ]
    },
    {
        "name": "Jane Smith",
        "deparments": [
            {
                "name": "IT"
            },
            {
                "name": "Management"
            }
        ]
    }
]  

下拉列表应包含部门列表,即 IT、客户和管理。

请有好心人为我指明从 Elasticsearch 检索不同部门列表的正确方向吗?

Thanks


这是一份工作terms聚合(文档 http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html#search-aggregations-bucket-terms-aggregation).

你可以拥有与众不同的departments像这样的值:

POST company/employee/_search
{
  "size":0,
  "aggs": {
    "by_departments": {
      "terms": {
        "field": "departments.name",
        "size": 0 //see note 1
      }
    }
  }
}

在您的示例中,输出:

{
   ...
   "aggregations": {
      "by_departments": {
         "buckets": [
            {
               "key": "management", //see note 2
               "doc_count": 2
            },
            {
               "key": "accounts",
               "doc_count": 1
            },
            {
               "key": "it",
               "doc_count": 1
            }
         ]
      }
   }
}

两个附加说明:

  • setting size设置为 0 会将最大存储桶数设置为 Integer.MAX_VALUE。如果太多就不要使用departments独特的价值观。
  • 你可以看到钥匙是terms分析结果departments价值观。请务必使用您的terms映射为的字段上的聚合not_analyzed .

例如,使用我们的默认映射(departments.name is an analyzed字符串),添加该员工:

{
  "name": "Bill Gates",
  "departments": [
    {
      "name": "IT"
    },
    {
      "name": "Human Resource"
    }
  ]
}

会导致这样的结果:

{
   ...
   "aggregations": {
      "by_departments": {
         "buckets": [
            {
               "key": "it",
               "doc_count": 2
            },
            {
               "key": "management",
               "doc_count": 2
            },
            {
               "key": "accounts",
               "doc_count": 1
            },
            {
               "key": "human",
               "doc_count": 1
            },
            {
               "key": "resource",
               "doc_count": 1
            }
         ]
      }
   }
}

有了正确的映射:

POST company
{
  "mappings": {
    "employee": {
      "properties": {
        "name": {
          "type": "string"
        },
        "departments": {
          "type": "object",
          "properties": {
            "name": {
              "type": "string",
              "index": "not_analyzed"
            }
          }
        }
      }
    }
  }
}

相同的请求最终输出:

{
   ...
   "aggregations": {
      "by_departments": {
         "buckets": [
            {
               "key": "IT",
               "doc_count": 2
            },
            {
               "key": "Management",
               "doc_count": 2
            },
            {
               "key": "Accounts",
               "doc_count": 1
            },
            {
               "key": "Human Resource",
               "doc_count": 1
            }
         ]
      }
   }
}

希望这可以帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Elasticsearch 不同的过滤器值 的相关文章

  • 从字符串开头过滤 ng-repeat 元素

    我正在尝试 AngularJS 这是我的第一次尝试 我正在尝试使用 开头为 而不是 包含 之类的内容来过滤对象数组 但我不明白如何做到这一点 假设我有一个elements像这样的数组 amount 50 amount 25 如果我想过滤5两
  • 在不知道对象键的情况下进行 Cosmos DB 查询

    单个文档示例 id xxxxxx properties a prop type names value John b prop type score value 5 5 c prop type names value Steve 问题 如何
  • 在Windows Xampp上安装和使用elasticsearch php客户端

    我下载的是elasticsearch 5 1 1 zip来自https www elastic co downloads elasticsearch https www elastic co downloads elasticsearch
  • 在 ElasticSearch API 应用程序中找不到 NodeBuilder

    我正在尝试实现 Elasticsearch API 我的系统接受 nodeBuilder 时出现错误 这是代码 import org elasticsearch action index IndexResponse import org e
  • 在流浪机器中使用elasticsearch设置graylog2服务器

    我正在尝试在本地开发计算机上安装graylog2 服务器 但遇到了elasticsearch 设置问题 我的elasticsearch作为服务安装在我的开发机器上运行的vagrant机器上 所以我的elasticsearch没有安装在127
  • 我们可以同时使用拼音标记和同义词吗?

    我正在尝试同时启用语音分析器和同义词 这似乎不起作用 它们一起使用有错吗 在下面的实现中 我希望使用同义词转换搜索查询 然后使用语音分析器来检索结果 但我的同义词在这里完全被忽略了 如果我在创建索引时删除语音分析器 那么同义词就可以正常工作
  • redis - 使用哈希

    我正在使用 redis 为我的 Web 应用程序实现社交流和通知系统 我是 redis 的新手 我对哈希值及其效率有一些疑问 我读过这篇很棒的文章Instagram 帖子 http instagram engineering tumblr
  • 如何使用c#从数据桶中获取所有文档?

    如何获取数据桶中的所有文档 我尝试过一个示例 但我只能获得一个特定的文档 这是我的代码 CouchbaseClient oclient oclient new CouchbaseClient vwspace data bucket name
  • 一起使用“过滤”和“排序”的 Google 表格

    这是我的第一个问题 我希望一切都好 我是使用谷歌表格的新手 但我正在慢慢进步 我正在尝试构建一个工作表 其中包含工作表 1 中的所有数据 在工作表 2 上 我想过滤工作表 2 中 D 列中标有数字 1 的所有数据 为此 我正在使用 FILT
  • Elasticsearch 关于“空索引”的查询

    在我的应用程序中 我使用了几个elasticsearch索引 它们在初始状态下不包含索引文档 我认为这可以称为 空 该文档的映射是正确且有效的 该应用程序还有一个包含实体的关系数据库 这些实体可能具有在 elasticsearch 中关联的
  • 如何增加vm.max_map_count?

    我正在尝试在 Ubuntu EC2 计算机 t2 medium 中运行弹性搜索 但我收到消息 最大虚拟内存区域 vm max map count 65530 太低 至少增加到 262144 我怎样才能增加vm max map count v
  • ElasticSearch 映射对分组文档进行折叠/执行操作的结果

    有一个对话列表 每个对话都有一个消息列表 每条消息都有不同的字段和action场地 我们需要考虑到在对话的第一条消息中使用了动作A 在几条消息之后有使用的动作A 1过了一会儿A 1 1等等 有一个聊天机器人意图列表 对对话的消息操作进行分组
  • Elastic Search 启动错误 - “\Common 此时出现意外。”

    我已经下载并解压了elasticsearch 当我运行批处理文件 elasticsearch bat 时 出现以下错误 Common was unexpected at this time Solved 通过编辑 bat 文件的第 46 行
  • 为 Logstash 中的新字段设置 Elasticsearch Analyzer

    通过使用GROK filter 我们可以向Logstash添加新字段 但是 我想知道如何为该特定字段设置分析器 例如 我有一个新的 id 字段 其中有一个字段 例如a b 但是 Elasticsearch 附带的普通分析器会将其分解为a a
  • 自动完成建议中的输出字段

    当我想在 elasticsearch 中索引文档时 会发生此问题 message MapperParsingException failed to parse nested IllegalArgumentException unknown
  • Android 上的 SQLite 和 MongoDB 具有同步功能

    是否可以在 Android 上使用 SQLite 在服务器上使用像 MongoDB 这样的 NoSQL 数据库 并在两者之间进行 2 路数据复制 同步 或者最好在两端使用 SQL 或者在两端使用 NoSQL 但不要混合使用 有几种不同的方法
  • Django 独特的不工作

    我在从查询中过滤掉重复项时遇到问题 我正在使用 Django 1 4 和 Postgres 8 4 13 我在我的模型对象上使用这个查询 它是一个 jquery 自动完成 term request GET get term field re
  • 使用文件的 AWS Elasticsearch 同义词

    我正在尝试使用文件将同义词添加到弹性搜索 如本链接所示 但它给了我以下错误https www elastic co guide en elasticsearch reference 5 2 analysis synonym tokenfil
  • 用一种方法进行 Ruby 选择和拒绝

    是否有任何内置方法可以结合以下功能Enumerable select 找到该块等于 true 的所有内容 和Enumerable reject 找到该块中所有等于 false 的内容 就像是 good bad list magic meth
  • Elasticsearch 通过搜索返回拼音标记

    我用语音分析插件 https www elastic co guide en elasticsearch plugins current analysis phonetic html由于语音转换 从弹性搜索中进行一些字符串匹配 我的问题是

随机推荐

  • java中的继承和超类(Object, Class)

    Is java lang Object隐式继承的所有自定义类 对象的超类 我以为java不支持多重继承 我问的原因是我是否已经从自定义类中的另一个类继承 并且 java 再次强制隐式继承java lang Object最重要的是 这不是多重
  • 为什么我们要在FRP中使用Behavior

    我正在学习反应式香蕉 为了理解该库 我决定实现一个虚拟应用程序 每当有人按下按钮时 该应用程序就会增加计数器 我使用的 UI 库是 Gtk 但这与解释无关 这是我提出的非常简单的实现 import Graphics UI Gtk impor
  • 是否可以有像部分类一样的部分xaml?

    我想将一个 xaml 文件分成几个文件 有点像部分类 有办法做到这一点吗 我希望能够更方便地管理我的项目文件 有一些可能性 尽管它可能并不完全是你所想的 您可以通过 ResourceDictionary 的方式外包资源 这对于样式和模板来说
  • 是否可以更改导航按钮以显示图像而不是蓝色?

    我正在尝试设置一个NavigationButton显示图像 而不仅仅是蓝色按钮 目前 我正在显示一个水平的 Scrollview 由图像组成 这些图像应该导致另一个视图 该视图将呈现在rootView 然而 当我将这些图像包裹在Naviga
  • 在带有 iOS 11 的 xcode 9 中 - 首次运行时加载地图图块的问题

    更新了新发现 在模拟器和设备上进行了测试 当应用程序从冷启动运行时 地图无法正确加载 不显示图块 mapViewDidFinishLoadingMap没有被调用 因此 由于地图未完成而出现问题 但我没有收到任何错误 如果我只是短暂退出应用程
  • 如何使用模拟框架测试在谷歌测试延迟后进行的调用

    我目前正在尝试评估不同的测试框架 当使用模拟框架时 我倾向于 FakeIt 但 google mock 也很好 我知道您可以通过在调用函数之前和之后使用操作系统的计时器调用来验证函数的性能来进行自己的 性能 测试 这不是我所追求的 我所做的
  • C# 如果一个方法花费的时间超过 2 秒,如何停止它?

    下面的程序将连接到网络并获取 msnbc com 网页的html内容并打印结果 如果从网页获取数据的时间超过 2 秒 我希望我的方法停止工作并返回 您能举个例子告诉我如何做到这一点吗 public partial class Form1 F
  • 如何使用条件空运算符来检查空字符串?

    我正在尝试执行 LINQ to 对象查询 如下所示 var c1 allCustomers Where x gt x CompanyName Replace StartsWith searchText ToList 只要 CompanyNa
  • 堆栈对象的“删除”行为是什么? [复制]

    这个问题在这里已经有答案了 int main Class Name t Class Name p t delete p return 0 这段代码在调用 2 个析构函数时执行得很好 删除如何处理堆栈对象 行为是否未定义 你遇到了未定义的行为
  • 访问 SQL Server 插入被 Select 阻止

    好的 我们有一个多用户 25 个用户 Access 2013 FE 和 SQL Server 2012 BE 直到昨天 整个系统都运行良好 现在已经完全停止了 如果用户 A 通过从表 Z 中直接选择查询读取打开了一条记录 那么如果用户 B
  • R Shiny:将reactiveValues()与data.table按引用分配一起使用

    我有一个闪亮的应用程序 其中多个反应组件使用计算速度很慢的函数的相同结果 为了避免多次计算慢函数 我可以使用reactiveValues 当输入发生变化时重新计算函数 并使结果可供所有需要它的反应组件使用 但是 如果reactiveValu
  • 无法解释的语法错误[重复]

    这个问题在这里已经有答案了 我遇到了一个我根本无法解释的语法错误 Code import React Component from react class Button extends Component handleClick gt th
  • 将内置函数插入 VS Code 扩展的正确方法

    介绍 我目前正在开发一个基于 Bluegiga BLE 112 模块的应用程序 该模块可使用 BGScript 脚本语言进行编程 然而 我发现的唯一对 BGScript 有某种支持的编辑器是 Notepad 它不适合我的需要 因此 我开始开
  • 如何将链接中的变量传递给 django 视图

    我有一个 html 表单 它使用 for 循环显示数据 tbody for sku lid stk mrp sp stts in product data tr td a class btn link href product produc
  • 如何在 PHP 中将 MySQL 数据库转换为 SQLite?

    我需要 PHP 代码来转换数据库 我试过如何使用 PHP 将 mysql 转换为 SQLite https stackoverflow com questions 10226067 how to convert mysql to sqlit
  • Android 4.0 ICS 中通话音频流修改

    我一直在从事一个项目 该项目将从呼叫流修改中受益匪浅 这已被反复提及 假设为无法实现 因为大多数人认为通话音频的硬件环路与设备的主 MCU 完全断开 诸如此类的问题将音频流式传输至 Android 电话 https stackoverflo
  • OSX:当文件出现在文件夹中时执行bash脚本

    我正在尝试编写自己的屏幕截图上传器脚本 我快到了 OSX 自动将屏幕截图上传到 imageBin 并将 URL 放入剪贴板 https stackoverflow com questions 21371254 osx automatical
  • 如何配置 SCP/SFTP 文件存储?

    我的 Laravel 应用程序应该将文件复制到另一个远程主机 远程主机只能通过带有私钥的 SCP 进行访问 我想配置一个新的文件存储 https laravel com docs 5 5 filesystem 与FTP类似 https la
  • 将图像从 FilePicker/Intent 复制到另一个目录

    我正在尝试将从 Intent 收到的图像复制到另一个目录 但我还无法让它工作 需要帮忙 我的日志猫 04 29 14 56 22 778 31620 31620 com example krupal sqlitetest I Choreog
  • Elasticsearch 不同的过滤器值

    我在 elasticsearch 中有一个大型文档存储 并且想要检索不同的过滤器值以显示在 HTML 下拉列表中 一个例子是这样的 name John Doe deparments name Accounts name Management