ElasticSearch:对聚合键进行排序,不区分大小写,并保持键的大小写

2024-04-22

我想从汽车中获得不同的制造值,并且制造值应该不区分大小写地按升序排序。我使用的是elasticsearch版本2.4.4

颜色和制作字段的映射

      "color": {
        "type": "string",
        "fields": {
          "keyword": {
            "type": "string",
            "index": "not_analyzed"
          },
          "lcsort": {
            "type": "string",
            "analyzer": "case_insensitive_sort"
          }
        }
      },
      "make": {
        "type": "string",
        "fields": {
          "keyword": {
            "type": "string",
            "index": "not_analyzed"
          },
          "lcsort": {
            "type": "string",
            "analyzer": "case_insensitive_sort"
          }
        }
      }

我对 case_insensitive_sort 分析器的设置

 "analysis": {
      "analyzer": {
        "case_insensitive_sort": {
          "filter": [
            "lowercase"
          ],
          "tokenizer": "keyword"
        }
      }
    }

Query 1

{
"size" : 0,
"query" : {
    "bool" : {
        "must" : {
            "match" : {
                "color" : "red"
            }
        }
    }
},
"aggs" : {
    "distinct_makes" : {
        "terms" : {
            "size" : 20,
            "field" : "make.keyword",
            "order" : {
                "_term" : "asc"
            }
        }
    }
  }
}

我从查询 1 得到的结果

 "buckets": [
    {
      "key": "Audi",
      "doc_count": 1
    },
    {
      "key": "BMW",
      "doc_count": 1
    },
    {
      "key": "Ferrari",
      "doc_count": 1
    },
    {
      "key": "Honda",
      "doc_count": 1
    },
    {
      "key": "Hyundai",
      "doc_count": 1
    },
    {
      "key": "Lexus",
      "doc_count": 1
    },
    {
      "key": "acura",
      "doc_count": 1
    },
    {
      "key": "bentley",
      "doc_count": 1
    }
  ]

我将查询更改为使用 make.lcsort 字段

{
"size" : 0,
"query" : {
    "bool" : {
        "must" : {
            "match" : {
                "color" : "red"
            }
        }
    }
},
"aggs" : {
    "distinct_makes" : {
        "terms" : {
            "size" : 10000,
            "field" : "make.lcsort",
            "order" : {
                "_term" : "asc"
            }
        }
    }
}

}

我让所有存储桶排序正确,但所有键都变成小写

 "buckets": [
    {
      "key": "acura",
      "doc_count": 1
    },
    {
      "key": "audi",
      "doc_count": 1
    },
    {
      "key": "bentley",
      "doc_count": 1
    },
    {
      "key": "bmw",
      "doc_count": 1
    },
    {
      "key": "ferrari",
      "doc_count": 1
    },
    {
      "key": "honda",
      "doc_count": 1
    },
    {
      "key": "hyundai",
      "doc_count": 1
    },
    {
      "key": "lexus",
      "doc_count": 1
    }
  ]

我的预期结果将是

 "buckets": [
    {
      "key": "acura",
      "doc_count": 1
    },
    {
      "key": "Audi",
      "doc_count": 1
    },
    {
      "key": "bentley",
      "doc_count": 1
    },{
"key": "BMW",
      "doc_count": 1
    }
    {
      "key": "Ferrari",
      "doc_count": 1
    },
    {
      "key": "Honda",
      "doc_count": 1
    },
    {
      "key": "Hyundai",
      "doc_count": 1
    },
    {
      "key": "Lexus",
      "doc_count": 1
    }
  ]

术语聚合是否可以返回索引数据的大小写,并以大小写激励的方式对它们进行排序?


None

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

ElasticSearch:对聚合键进行排序,不区分大小写,并保持键的大小写 的相关文章

  • 将 CloudTrail 日志导入 Logstash

    我正在尝试将日志从 CloudTrail 获取到 ElasticSearch 中 以便我们可以更好地了解 AWS 账户中发生的情况 我已经在我的机器 Ubuntu 14 04 上设置了 Logstash 和 ElasticSearch 并且
  • 在elasticsearch中截断索引

    等效操作是什么elasticsearch为了做 TRUNCATE mytable 我要截断的索引称为 myindex 换句话说 在操作之后 我希望索引 myindex 中有零个文档 您需要删除索引 然后重新创建它 虽然这需要您再次设置映射
  • Logstash 错误 Java::JavaLang::NoClassDefFoundError 无法解决

    我是elasticsearch ES 和logstash 的新手 我已经使用它成功设置了elasticsearch和kibanalink https www youtube com watch v hVgrXi 9L6Y 之后我尝试使用lo
  • 将带有脚本的管道聚合转换为 kibana

    Can 管道聚合 https www elastic co guide en elasticsearch reference current search aggregations pipeline html在elasticsearch中转
  • AWS Elasticsearch 和 CORS

    我正在试用 AWS Elasticsearch 服务 https aws amazon com elasticsearch service https aws amazon com elasticsearch service 设置非常简单
  • 如何在elasticsearch中使用冒号搜索模式?

    我在 Elasticsearch 中有一个字段 其值为 ft 05 08 2015 13 01 27 358 cgn 4189 当我想使用查询字符串 cgn 4189 进行搜索时 我没有结果 我尝试像 cgn 4189 一样转义冒号 但有语
  • Elasticsearch 崩溃后无法恢复

    磁盘空间不足 导致 Elasticsearch 分片崩溃 三个节点现在为红色 两个节点已恢复 它们的状态为黄色 ES 的 CPU 利用率为 150 内存利用率很高 正在尝试恢复它们 但似乎存在一些版本匹配冲突 我清理了磁盘空间并删除了分片的
  • 为什么我在elasticsearch中需要“store”:“yes”?

    我真的不明白为什么核心类型链接 http www elasticsearch org guide reference mapping core types 它在属性描述中说 例如 对于数字 store 设置为 yes 将实际字段存储在索引中
  • 按字段关联 ELK 中的消息

    相关 在ELK中合并日志和查询 https stackoverflow com questions 28429607 combine logs and query in elk 我们正在设置 ELK 并希望在 Kibana 4 中创建可视化
  • 在elasticsearch结果中显示不匹配的单词

    我想显示返回文档的多单词查询不匹配哪些单词 是否有查询类型或参数来实现此目的 通常 此类不匹配的单词会以删除线字体显示给用户 我得到答案后的示例查询 POST posts search query bool should match nam
  • 如何在弹性搜索中生成多个布尔查询的查询

    我想使用 spring 框架在 elasticsearch 中动态生成多个布尔运算的查询 我在elasticsearch中的数据就像 masterID
  • 如何在 kibana 中自动配置索引模式

    是否可以在 kibana 中自动配置索引模式 要么通过一些设置文件 要么通过rest api 安装后可以手动完成 Kibana 5 x 公开了这样的 API 来管理索引模式 要创建索引模式 可以发出以下命令来 kibana 访问 url 只
  • ElasticSearch JavaAPI (SearchScroll)- search_context_missing_exception","re​​ason":"找不到 id 的搜索上下文

    我正在获取超过100k使用一个索引中的文档searchScroll并在所有字段中再添加一个字段100K文件 然后再次将这些文档插入到另一个新索引中 我正在使用SearchScrollapi 也在设置大小searchSourceBuilder
  • 在 Elastic 搜索中加载示例数据集时出错

    您好 我正在尝试加载示例数据集参考弹性搜索文档 https www elastic co guide en elasticsearch reference current exploring your data html但是当我尝试运行指示
  • 如何编写Elasticsearch多个必须脚本查询?

    我想使用查询来比较多个字段 我有字段 1 到 4 我想搜索字段 1 大于字段 2 的数据 并且下面的查询工作正常 size 0 source field1 field2 field3 field4 sort query bool filte
  • ElasticSearch 嵌套查询 - 排除父文档

    尝试排除其中子文档之一与查询不匹配的顶级文档 对于下面的示例 我尝试排除其嵌套作业之一具有的所有文档current true 并与company name Elastic 但由于嵌套作业文档之一与current false和公司name E
  • Elasticsearch 单个字段的多个分析器

    我使用严格的预定义映射将不同类型的文档存储在单个索引中 它们都有一些字段 例如 body 但我希望在索引时对它们进行稍微不同的分析 例如 对特定文档使用不同的标记过滤器 并在搜索时以相同的方式处理 据我所知 分析器不能按文档指定 我还考虑使
  • 弹性搜索文档计数

    我正在运行 2 2 版本的 Elastic 搜索 我已经创建了索引并加载了示例文档 我发现其中有些问题 当我给予 GET index type count 我得到了正确的答案 count 9998 shards total 5 succes
  • 无法使用docker在Apple Mac芯片M1上启动elasticsearch

    在发布这个问题之前 我浏览了许多链接 例如 Kibana 无法在 Mac M1 上使用 docker 连接到 ElasticSearch https stackoverflow com questions 73160632 kibana c
  • 如何使用ElasticSearch来实现社交搜索?

    我正在尝试使用 ElasticSearch 创建具有社交功能的商业搜索 我有一个企业目录 用户可以通过不同的方式与这些企业进行交互 通过查看它们 检查它们等 当用户搜索商家时 我希望能够在结果顶部向他们显示他们的朋友与之互动过的商家 或根据

随机推荐

  • 如何在Python中按扩展名删除文件?

    我只是想制作一个通过 zip 扩展名删除项目的脚本 import sys import os from os import listdir test os listdir Users ben downloads for item in te
  • 检测跨域弹窗何时关闭

    我有一个 JavaScript 应用程序 位于domainA com 上 为了验证用户身份并设置 cookie 它会在 domainB com 上打开一个弹出窗口 这类似于 Twitter 的 anywhere 如何检测domainB co
  • 如何在 R 中绘制更平滑的曲线

    Using R 我画了一个阴影图 如果您看到曲线 它们并不平滑 如何让它们变得光滑 即使是 Excel 也能绘制出更加平滑的曲线 设备功能 Windows 7 屏幕分辨率 1366 x 768 最大 这是情节 以下代码用于绘制绘图 plot
  • 删除前 n 个单词并计数

    我有一个数据框对于文本列 我需要忽略或消除前 2 个单词并计算该列中的字符串数量 b lt data frame text c hello sunitha what can I do for you hi john what can I d
  • 从 std::heap 中间删除一个元素

    我使用优先级队列作为调度程序 但有一个额外的要求 我需要能够取消预定的项目 这相当于从优先级队列中间删除一个项目 我不能使用std priority queue因为对除顶部之外的任何元素的访问都受到保护 我正在尝试使用algorithm的堆
  • python 单元测试中的 Neo4j 临时数据库

    我正在尝试为将与 Neo4j 图形数据库交互的 python 项目创建单元测试 目前 我正在实现嵌入式图形数据库 但如果我选择将其部署到 Web 应用程序 我可能会迁移到 REST 接口 我已经安装了嵌入式 neo4j v1 9rc2pro
  • BeautifulSoup:AttributeError:“NavigableString”对象没有属性“name”

    你知道为什么 BeautifulSoup 教程中的第一个例子吗http www crummy com software BeautifulSoup documentation html QuickStart http www crummy
  • 将 WatiN 连接到 Firefox

    使用 WatiN 我面临一些问题 FireFox FF new FireFox http www google com FireFox 总是在此时崩溃 VS 报告 无法从传输中读取数据 连接 现有连接是 被远程主机强行关闭 知道为什么会发生
  • 获取剑道网格中的点击事件

    我正在尝试获取 Kendo Grid 的单击事件 以便我可以将内容绑定到 Shift 和 Ctrl 单击 我无法使用 Kendo 提供的固有多选功能 因为它不支持拖放 当我在 dataBound 事件之后创建函数时 我的函数会在单击时被调用
  • 当绘制的数据发生更改时,在 R 中更新绘图,无需重新创建小部件

    每次 R 在闪亮 或仅在 R 中创建一个绘图对象时 该小部件都会完全重新创建 对于小数据集 这不是问题 但我正在处理包含数千个散点的绘图 这使得在我的闪亮应用程序中重新创建绘图需要 10 20 秒 我正在寻找一种通过 JavaScript
  • 从 IIS 7/8 中的静态内容中删除服务器标头

    为了使我们的 API 和网站更加安全 我将删除那些泄露网站运行信息的标头 剥离标头之前的示例 HTTP 1 1 500 Internal Server Error Cache Control private Content Type tex
  • 使用 $.ajax 或 $.post 调用 MVC 5 控制器方法

    我正在尝试使用 JavaScript 设置从 MVC 页面到控制器的非常简单的调用 这是我的控制器 Imports System Web Mvc Namespace Controllers Public Class DataControll
  • 如何在 LaunchStoryboard 中显示 CFBundleShortVersionString?

    有没有办法在我的 LaunchStoryboard 中将 CFBundleShortVersionString 显示为 UILabel 文本 而无需在每次递增时手动输入它 我知道如何在代码中执行此操作 但在显示 LaunchStoryboa
  • 如何在 PHP CLI 中检测 STDOUT 重定向?

    我有一个 PHP CLI 脚本 它使用 shell 转义序列进行粗体显示 但我希望能够在脚本重定向 例如重定向到日志文件 时自动禁用这些序列 到目前为止 我可以找到在除 PHP 之外的所有内容中检测 STDOUT 重定向的方法 所以有人可以
  • Rmarkdown 到 Word 输出 - 在标题上方插入图像

    我有一个 Rmarkdown 文档 我正在将其输出到 Word 并且我正在尝试将公司徽标插入到页面顶部 位于包含标题和作者的标题上方 我还没有找到解决这个问题的办法 我尝试过使用pandoc args to include in heade
  • 更改 NuGet 包位置文件夹

    我想改变NuGet包文件夹 但它不会改变它 我所做的是创建文件nuget config
  • Java Try 和 Catch IOException 必须被捕获或声明为抛出

    我正在尝试使用我在底部找到的一些代码这一页 https stackoverflow com questions 453018 number of lines in a file in java 这是我为其创建的类中的代码 import ja
  • 为什么 DataBinding 没有传播到 UserControl

    今天早上我问了一个问题here https stackoverflow com questions 39835222 command binding is not propagating for control into a datatem
  • aspnet Identity 中的实体框架缓存

    我正在 EF6 和 aspnet Identity 中构建一个项目 我面临以下问题 如果我打电话 var account await FindByNameAsync userName account IsConfirmed true 我得到
  • ElasticSearch:对聚合键进行排序,不区分大小写,并保持键的大小写

    我想从汽车中获得不同的制造值 并且制造值应该不区分大小写地按升序排序 我使用的是elasticsearch版本2 4 4 颜色和制作字段的映射 color type string fields keyword type string ind