我能够在弹性搜索 6.8 中使用聚合查询获取数据库中文本字段的所有值:
{
aggs: {
values: {
terms: { field: 'City.keyword', size: 200 },
},
},
size: 0,
};
我正在尝试为嵌套字段做同样的事情。
下面是文本字段(城市)和嵌套字段(冷却)的示例
"City": "Fredericksburg",
"Cooling": [
{
"key": "Fuel",
"value": "Electric"
},
{
"key": "Central Air",
"value": "Y"
},
{
"key": "Central A/C",
"value": "true"
}
],
下面是我一直引用的文档:https://www.elastic.co/guide/en/elasticsearch/reference/6.8/search-aggregations-bucket-terms-aggregation.html
这是相关的映射:
{
"listings:366": {
"mappings": {
"_default_": {
"_all": {
"enabled": false
},
"dynamic_templates": [
...
{
"Cooling": {
"path_match": "Cooling.*",
"mapping": {
"type": "text"
}
}
},
...
],
"properties": {
...
"Cooling": {
"type": "nested"
},
...
}
},
"listings": {
"_all": {
"enabled": false
},
"dynamic_templates": [
...
{
"Cooling": {
"path_match": "Cooling.*",
"mapping": {
"type": "text"
}
}
},
...
],
"properties": {
...
"Cooling": {
"type": "nested",
"properties": {
"key": {
"type": "text"
},
"value": {
"type": "text"
}
}
},
}
}
}
}
}
尝试使用复合聚合:请参阅复合聚合
如果冷却
是嵌套
类型,那么您可以通过首先将术语
聚合嵌套在顶级嵌套
聚合中以“深入”冷却嵌套文档来实现您想要的:
{
"size": 0,
"aggs": {
"cooling": {
"nested": {
"path": " Cooling"
},
"aggs": {
"values": {
"terms": {
"field": "Cooling.key", <--- make sure this field is mapped as keyword
"size": 200
}
}
}
}
}
}
更新
您的映射需要更改为:
"properties": {
...
"Cooling": {
"type": "nested",
"properties": {
"key": {
"type": "keyword" <--- change this
},
"value": {
"type": "text"
}
}
},
}
问题内容: 我只想获取嵌套字段,但不能,因为它不是叶字段。 我在下面尝试过,但是无法匹配嵌套对象中的每个ID和名称。 结果: 这是我的预期结果: 问题答案: 如果您没有某个查询应以某种方式匹配嵌套字段,则可以这样进行: 如果您还有一个查询,并且想返回 匹配 的 嵌套文档,则 可以这样操作(使用):
让我们想象一下Elasticsearch索引,其中每个文档代表一个国家。Country具有城市字段,该字段定义为嵌套的。 示例映射(为了本示例的简洁性而简化): 我插入到索引中的文档如下所示: 是否可以组成一个返回所有城市(所有国家)并支持排序的查询 第一个返回页面(回复)将包含捷克共和国的10个城市,第二个页面将包含10个城市,其中四个(最后一个)来自捷克共和国,六个来自斯洛伐克。 我正在研究复
以下是我的查询的简化版本: 希望有办法解决这个... 提前感谢你的帮助
我有一个索引,它有嵌套的字段。我想在响应中只包括特定的嵌套对象,基于条件以及其他字段。例如,考虑映射 我想按名称搜索用户,并希望响应只包括嵌套对象包含country='U.S.“。请考虑用户索引中的以下文档 我期待搜索结果如下 请为我提供一个合适的elasticsearch查询以获取此文档
我将Elasticsearch 6与PHP结合使用。 我的文档有一个嵌套字段,如下所示: 基本上每个文档都有很多价格,但我知道每个文档只有一个价格与过滤器/查询匹配。 我用它来搜索和排序,改编自这里的教程:https://www.elastic.co/guide/en/elasticsearch/guide/current/nested-sorting.html(对PHP数组格式表示抱歉): 我得
问题内容: 我想在每个更新时间将一个对象添加到字段中。 例如,我有一个文档: 下次,我想在测试字段中添加一个对象并保存旧对象。结果是: 如何实现? 编辑 我使用脚本: 但是,我得到了例外: 编辑 现在,我想添加一个字段以确保更新或插入对象。例如: 当我更新字段时,当id存在时,我将更新对象。相反,我将插入对象。 问题答案: 我建议尝试这样的脚本,该脚本在参数中带有两个参数。它将检查任何嵌套对象是否