Elasticsearch 聚合将结果转换为小写

2023-12-11

我玩了一下 ElasticSearch,在进行聚合时发现了一个问题。

我有两个端点,/A and /B。在第一个中,我有第二个的父母。因此,B 中的一个或多个对象必须属于 A 中的一个对象。因此,B 中的对象有一个属性“parentId”,其父级索引由 ElasticSearch 生成。

我想通过 B 的子属性过滤 A 中的父项。为此,我首先按属性过滤 B 中的子项,并获取其唯一的父 ID,稍后我将使用该 ID 来获取父项。

我发送这个请求:

POST http://localhost:9200/test/B/_search
{
    "query": {
        "query_string": {
            "default_field": "name",
            "query": "derp2*"
        }
    },
    "aggregations": {
        "ids": {
            "terms": {
                "field": "parentId"
            }
        }
    }
}

并得到这样的回应:

{
  "took": 91,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 3,
    "max_score": 1,
    "hits": [
      {
        "_index": "test",
        "_type": "child",
        "_id": "AU_fjH5u40Hx1Kh6rfQG",
        "_score": 1,
        "_source": {
          "parentId": "AU_ffvwM40Hx1Kh6rfQA",
          "name": "derp2child2"
        }
      },
      {
        "_index": "test",
        "_type": "child",
        "_id": "AU_fjD_U40Hx1Kh6rfQF",
        "_score": 1,
        "_source": {
          "parentId": "AU_ffvwM40Hx1Kh6rfQA",
          "name": "derp2child1"
        }
      },
      {
        "_index": "test",
        "_type": "child",
        "_id": "AU_fjKqf40Hx1Kh6rfQH",
        "_score": 1,
        "_source": {
          "parentId": "AU_ffvwM40Hx1Kh6rfQA",
          "name": "derp2child3"
        }
      }
    ]
  },
  "aggregations": {
    "ids": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "key": "au_ffvwm40hx1kh6rfqa",
          "doc_count": 3
        }
      ]
    }
  }
}

由于某种原因,过滤后的键以小写形式返回,因此无法向 ElasticSearch 请求父级

GET http://localhost:9200/test/A/au_ffvwm40hx1kh6rfqa

Response:
{
  "_index": "test",
  "_type": "A",
  "_id": "au_ffvwm40hx1kh6rfqa",
  "found": false
}

关于为什么会发生这种情况有什么想法吗?


命中和聚合结果之间的区别在于聚合对创建的术语起作用。他们还将返回条款。命中返回原始来源。

这些术语是如何创建的?基于所选的分析器,在您的情况下是默认分析器,即标准分析器。该分析器所做的事情之一是小写术语的所有字符。正如 Andrei 所提到的,您应该将字段parentId 配置为not_analyzed。

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

Elasticsearch 聚合将结果转换为小写 的相关文章

随机推荐

  • 如何将图库中的图像存储到 SQLite 数据库中

    我已经尝试使用此代码将图像从图库上传到我的应用程序中的 sqllite 数据库 但是当我的应用程序尝试打开图库时 它给出强制关闭错误 我不知道问题是什么 请帮助我并提前感谢 public class ImagggggggActivity e
  • 转换后的 mp4 h264 基线格式加载时间较长

    我已将视频转换为 mp4 x264 基线格式 并且它可以在所有 PC 手机上正常工作 问题是加载视频需要很长时间 而谷歌搜索发现 ffmpeg 会在视频的末尾处转换并设置索引文件因此它会加载到最后阅读 然后播放视频 因此任何缩短加载时间的建
  • Iterator 类和 foreach 构造之间的性能差异

    我正在运行以下代码 但有时在运行它时会出现某种并发异常 ArrayList
  • 计算青蛙到达河对岸所需的最少跳跃次数

    我正在处理下面提供的 Codility 问题 斐波那契数列使用以下递归公式定义 F 0 0 F 1 1 F M F M 1 F M 2 if M gt 2 一只小青蛙想要到河的对岸 青蛙最初位于河的一侧 位置 1 并想要到达另一侧 位置N
  • 检查 PHP 中的多个变量(布尔值)

    我在我的代码中使用它 但我认为它可以改进并且可以用更简单的方式完成 if phaseOne true phaseTwo true phaseThree true 你可以这样做 if phaseOne phaseTwo phaseThree
  • 在 Pandas 中按组回填列

    我有一个类似的csv A B C D 1 2 1 2 30 100 1 2 40 100 4 5 4 5 60 200 4 5 70 200 8 9 第 1 行和第 4 行中缺少 C 值 NaN 我想分别从第 2 行和第 5 行获取它们的值
  • 如何在GroupLayout Java中设置Jframe背景图片

    我试图为我的框架设置背景图像 但它不起作用 我尝试了这个链接 在 JFrame 中设置背景图像 代码 setContentPane new JLabel new ImageIcon ImageIO read new File Images
  • split 不返回空元素

    为什么这些不都返回bbb perl e a print map b split a lt
  • 过滤器功能 dplyr 似乎不起作用[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 目前不接受答案 假设我在 R Studio 中加载了一个名为 exprCore1 的数据框 df 如下所示 measure qid value 1 p5 1 0 2 2 p100 1 0 8
  • Angular2路由器保留查询字符串

    我编写了一个使用路由器的 Angular2 v2 0 1 应用程序 该网站加载了多个查询字符串参数 因此完整的 URL 最初如下所示 https my application com param1 val1 param2 val2 para
  • 设计以避免派生类中的类型转换?

    public interface IBasePresenter public interface IJobViewPresenter IBasePresenter public interface IActivityViewPresente
  • 使用变量过滤器列出文件

    我正在尝试在 shell bash 中使用过滤器列出文件 这个例子有效 result ls A1 A2 txt echo result 文件1 A1 txt 文件2 A2 txt 但是当将过滤器放入变量中时 它不起作用 filter A1
  • 带 AVPlayer 的应用程序启动后播放 mp4 中断 iPod 音乐

    我的应用程序使用 AVPlayer 播放 mp4 当我的应用程序完成启动时 它会中断 iPod 音乐 尽管我已将音频会话设置为允许与其他人混合 BOOL application UIApplication application didFi
  • C++(LAPACK、sgels)和 Python(Numpy、lstsq)结果之间的差异

    我正在比较 C 和 Python 计算的数值结果 在 C 中 我利用 LAPACK 的 sgels 函数来计算线性回归问题的系数 在 Python 中 我使用 Numpy 的 linalg lstsq 函数来完成类似的任务 sgels 和
  • Angular2:渲染/重新加载组件的模板

    理想情况下 我需要重新加载 重新渲染我的组件模板 但如果有更好的方法来做到这一点 我将很乐意实现它 期望的行为 所以 我有一个菜单元素的组件 什么时候 在另一个组件中 我点击一个 IBO 每说某种 客户 被点击我需要add 我在用着 ngI
  • clojure.java.sh:没有这样的文件或目录

    我编写了一个程序来汇编 dot 文件 并想使用 Clojure 的sh给出编译命令 具体来说 我使用以下函数来做到这一点 defn compile graphviz Dumps graphviz string to a file then
  • 从常见图像格式中删除所有元数据?

    我正在为一个项目编写一项服务来处理我们的图像处理 一个这样的过程应该从数据中剥离所有元数据byte 提供并返回相同的图像byte 我目前正在研究的方法涉及始终将图像转换为Bitmap 然后将其转换回原始格式并从 a 返回数据MemorySt
  • 使用 Microsoft Graph 客户端库访问 One Drive 时无法检索用户的 mysite URL

    尝试访问 One Drive 内容时 使用 Microsoft Graph 客户端库的以下代码段失败 var items Graphclient Me Drive Root Children Request GetAsync Result
  • 执行“捆绑安装”后无法找到 Gemfile

    嘿 我对 Rails 完全陌生 刚刚开始按照教程的步骤创建我的第一个项目 我使用以下方法创建了新项目 rails myapp 那我应该执行bundle install 这不起作用 因为尚未安装捆绑程序 在 Gems 更新并安装捆绑程序后我已
  • Elasticsearch 聚合将结果转换为小写

    我玩了一下 ElasticSearch 在进行聚合时发现了一个问题 我有两个端点 A and B 在第一个中 我有第二个的父母 因此 B 中的一个或多个对象必须属于 A 中的一个对象 因此 B 中的对象有一个属性 parentId 其父级索