在搜索Elasticsearch期间,我收到以下错误。
QueryParsingException [[dev_app] [嵌套]路径下的嵌套对象 [contactNames]不是嵌套类型];
在检查实际文档时,以下请求对象有效 https://www.elastic.co/guide/en/elasticsearch/reference/1.6/query-dsl-nested-query.html
这是请求对象:
[
{
"query": {
"bool": {
"must": [
{
"constant_score": {
"query": {
"match": {
"contactBookId": {
"query": 15496
}
}
}
}
},
{
"constant_score": {
"query": {
"nested": {
"path": "contactNames",
"query": {
"bool": {
"must": [
{
"match": {
"contactNames.fullName": {
"query": "fewafwa"
}
}
},
{
"match": {
"contactNames.nameIndex": {
"query": "1"
}
}
}
]
}
}
}
}
}
}
]
}
},
"size": 100
}
]
感谢您的帮助
答案 0 :(得分:1)
问题在于未在Elasticsearch中填充的索引。因此错误有点奇怪
答案 1 :(得分:-1)
检查索引映射,contactNames
需要是嵌套类型。
它应该是这样的(根据您的需要采用它):
{
"mappings": {
"yourType": {
"properties": {
"contactNames": {
"type": "nested",
"properties": {
"fullName": {
"type": "string"
},
"nameIndex": {
"type": "integer"
}
}
}
}
}
}
}
然后它不会给你一个例外而且会像被开除一样工作。