elasticsearch - 弹性搜索查询所有字段,包括嵌套字段
问题描述
我正在使用 ES 版本 5.6。我有一个类似下面的文档存储在 ES 中。
{
"swType": "abc",
"swVersion": "xyz",
"interfaces": [
{
"autoneg": "enabled",
"loopback": "disabled",
"duplex": "enabled"
},
{
"autoneg": "enabled",
"loopback": "disabled",
"duplex": "enabled"
}
]
}
我想搜索所有已“启用”的字段。
我尝试了以下查询,但没有奏效。
curl -XGET "http://esserver:9200/comcast/inventory/_search" -H 'Content-Type: application/json' -d'
{
"query": {
"match":{
"_all": "enabled"
}
}
}'
curl -XGET "http://esserver:9200/comcast/inventory/_search" -H 'Content-Type: application/json' -d'
{
"query": {
"query_string": {
"query": "enabled",
"fields": ["*"]
}
}
}'
但是下面的查询有效
curl -XGET "http://esserver:9200/comcast/inventory/_search" -H 'Content-Type: application/json' -d'
{
"query": {
"match":{
"_all": "abc"
}
}
}'
因此,looks_all
仅匹配顶级字段而不匹配嵌套字段。有什么方法可以查询所有字段中包含的文本,包括嵌套字段。我不想明确指定嵌套字段名称。我正在寻找一种全局搜索,我想在文档中的任何位置搜索“文本”。
谢谢。
解决方案
好的。得到它的工作。我已经设置了映射dynamic:false
。看起来 ES 只会在映射中指定的字段中搜索,而我的搜索词在动态添加的字段中。
制作dynamic:'strict'
帮助我缩小了问题的范围。
推荐阅读
- r - 加载 RCurl 包失败
- javascript - 为什么即使在 .on 委托方法之后进行 DOM 更改时 JQuery 也不起作用
- windows - 为什么多播套接字在具有两个网络接口的系统上按预期工作?
- git - Webhook 和 CI/CD 之间的区别
- sockets - 不知道端口号的套接字连接 - Python
- angular - IONIC 4 中的 Cloud Firestore 功能
- angular - 动态导入是否适用于 variable ,还是需要硬编码字符串?
- vue.js - 添加新行时,Vue js文本字段值变为空
- blazor - 如何将焦点设置到 InputText 元素?
- javascript - 如何创建将数据从一个本地站点传输到另一个站点的 JS