我使用的是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"
}
}
}'
所以,看起来_all
只匹配顶级字段而不是嵌套字段。有没有办法查询包含嵌套的所有字段中包含的文本。我不想明确指定嵌套字段名称。我正在寻找一种全局搜索,我想在文档中的任何地方搜索“文本”。
谢谢。
好。搞定了。我设置了映射dynamic:false
。看起来ES只会在映射中指定的字段中搜索,而我在动态添加的字段中搜索我的搜索词。
制作dynamic:'strict'
帮助我缩小了问题范围。