elasticsearch - ELASTICSEARCH - 过滤内部点击中的值
问题描述
在这个查询中,我想从最新的文档中获取字段 witg values "data.addresses.ces.cp": "true"",然后它返回 true 值,比如 false 我怎么才能只过滤 true?
{ "_source": "created_at",
"size": 1,
"sort": [
{
"created_at.keyword": {
"order": "desc"
}
}
],
"query": {
"nested": {
"path": "data.addresses",
"inner_hits": {
"_source": ["data.addresses.ces.secondname", "data.addresses.ces.cp"],
"size":100
},
"query": {
"nested": {
"path": "data.addresses.ces",
"query": {
"match": {
"data.addresses.ces.cp": "true"
}
}
}
}
}
}
输出:
"ces" : [
{
"secondname" : "lopez",
"cp" : true
},
{
"secondname" : "gomez",
"cp" : false <--------------- error
},
{
"secondname" : "garcia",
"cp" : false <---------------error
}
]
}
},
解决方案
为什么你会查询data.addresses.services.cp
但你想检索有点令人困惑data.addresses.ces.cp
。这是什么ces
?是服务的错字吗?
在任何情况下,正如@Val 建议的那样,您可以将另一个inner_hits
放入最里面的嵌套查询中:
{
"_source": [
"created_at"
],
"size": 10,
"query": {
"nested": {
"inner_hits": {
"size": 100,
"name": "ih_addresses"
},
"path": "data.addresses",
"query": {
"nested": {
"inner_hits": {
"name": "ih_services"
},
"path": "data.addresses.services",
"query": {
"match": {
"data.addresses.services.cp": true
}
}
}
}
}
}
}
请注意,inner_hits
可以有一个name
属性来区分一个和另一个。
推荐阅读
- asp.net-core - AzureAD 中间件因 HTTP/HTTPS redirectUri 问题而中断
- html - How to move scrollbar behind fixed Navbar/Header
- python - 列表理解的优雅总结
- angular - 使用 Ts 文件中的 ngx translate 服务翻译甜蜜警报标题和消息
- python - 在 Google Colab 上运行时出现“系统退出 2”
- javascript - 如何在表格中动态修复工具提示消息ID
- google-cloud-platform - Google Stackdriver Monitoring 用于监控实例组中的每个虚拟机
- java - 如何解决以下描述中描述的错误?
- java - 当应用程序关闭以进行事件提醒时如何生成通知?
- android - 数据库 URL 更改后,Sketchware 无法连接到 Firebase 实时数据库