我正在使用Elasticsearch 5.1.1。在执行嵌套查询时,它返回400错误
我的文档看起来像这样
{
"_index" : "test",
"_type" : "test_five",
"_source" : {
"doc" : {
"keyword_elas" : "elasticsearch",
}
},
"doc_as_upsert" : true }
这是我的查询代码
{
"query": {
"nested": {
"path":"_source",
"query": {
"nested": {
"path": "_source.doc",
"query": {
"match": {
"_source.doc.keyword_elas": "elasticsearch"
}
}
}
}
}
}}
对于上面的查询,我得到了一个例外
elasticsearch.exceptions.RequestError:TransportError(400, u' search_phase_execution_exception',u'无法创建查询:{\ n "嵌套" :{\ n"查询" :{\ n"嵌套" :{\ n
由于一些查询错误,这是一个例外吗?或任何版本问题...
谢谢
答案 0 :(得分:2)
我不太清楚为什么你在这种环境中使用嵌套查询。
如果我有这样的文件:
{
"_index" : "test",
"_type" : "test_five",
"_source" : {
"doc" : {
"keyword_elas" : "elasticsearch",
}
},
"doc_as_upsert" : true }
我的目标是匹配keyword_elas
字段。我所要做的就是:
GET test/test_five/_search
{
"query": {
"match" : {
"keyword_elas" : "elasticsearch"
}
}
}
完全匹配:
分析字段:
GET test/test_five/_search
{
"query": {
"match" : {
"keyword_elas" : "elasticsearch",
"fuzziness": "0"
}
}
}
注意:如果keyword_elas
中的文档包含elasticsearch ABC
,则此查询将起作用,因为它将在第一个标记(elasticsearch
)上为零模糊。
not analyzed fields
(完全匹配)
GET test/test_five/_search
{
"query": {
"term" : { "keyword_elas" : "elasticsearch" }
}
}
如果索引中有两个文档
keyword_elas : elasticsearch
和
keyword_elas : elasticsearch abc
术语查询仅匹配第一个文档。