elasticsearch - 获取与 Elasticsearch 中特定查询对应的映射
问题描述
由于 Elasticsearch 的最新版本已弃用单个索引中的多个类型,因此我通过类型为“keyword”的“doc_type”字段组织了我的数据,这使我能够运行如下查询:
curl 'localhost:9200/my_index/_search?pretty&q=doc_type:my_doc_type'
此查询将返回其 doc_type 字段为 'my_doc_type' 的所有文档。现在,我只想从这种请求中检索字段的映射。
为了重现这种情况,假设我们定义索引映射如下:
curl -XPUT 'localhost:9200/my_index/my_type/_mapping?pretty' -H 'Content-Type: application/json' -d '{
"my_type" : {
"properties" : {
"first_name" : {"type" : "text" },
"last_name": {"type": "text"},
"doc_type": {"type": "keyword"}
}
}
}'
现在,让我们注入以下两个文件:
curl -XPUT 'localhost:9200/my_index/my_type/1' -H 'Content-Type: application/json' -d '{ "last_name": "Doe", "first_name": "John", "doc_type": "type_a"}'
curl -XPUT 'localhost:9200/my_index/my_type/1' -H 'Content-Type: application/json' -d '{ "first_name": "Jane", "doc_type": "type_b"}'
我将能够仅检索与查询匹配的文档的映射q=doc_type:type_b
。在这种情况下,我应该只检索字段“keyword”和“first_name”的映射。
如果单个查询无法做到这一点,我知道 Elasticsearch 提供了特定的字段映射查询,但要使用它,我首先需要检索与q=doc_type:type_b
查询匹配的所有文档的所有字段联合。有没有办法做到这一点?
解决方案
我不是专家,但我相信不可能获得特定 ElasticSearch 查询结果的“映射”。来自 ES 文档的映射定义说:
映射是定义文档及其包含的字段如何存储和索引的过程。例如,使用映射来定义:[...]
这个概念对查询的结果没有意义。
似乎检索所有结果和计算联合是必要的。或者,您可以尝试对映射计数非空值的所有字段进行聚合。不确定它的效率如何。
在任何情况下,最好接收整个映射并过滤相关字段,而不是为每个字段单独检索每个字段。
推荐阅读
- java - 有没有办法创建一个特定于玩家的倒计时,当玩家离开 Java 时该倒计时停止?
- npm - Pycharm SASS:在相对目录中输出css
- jquery - 最大调用堆栈大小超出错误但仅在某些 div
- bash - Shell 脚本从文件中读取名称值对
- jsf - 从 ajax 调用重新加载和刷新表
- vue.js - 我无法将 Bootstrap 样式导入 vue-cli 项目
- python-3.x - Pandas:基于分位数的自定义排名函数
- html - 为什么图像源为空时会添加黑线?
- c++ - 我正在尝试用 C++ 做一个方程式,但它一直输出 1
- sql-server - SQL Server 在转换为 varchar 时更改了 float 列中的值