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:对聚合键进行排序,不区分大小写,并保持键的大小写 的相关文章

随机推荐

  • 如何在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