这是一个非常基本的问题,但我在查询中找不到什么问题。
映射:
{
"typeName": {
"properties": {
"active": {
"type": "boolean"
},
"id": {
"type": "string",
"index": "not_analyzed"
},
"values": {
"type": "nested",
"properties": {
"by": {
"type": "string",
"analyzer": "english"
},
"idChatRoom": {
"type": "string",
"analyzer": "english"
},
"message": {
"type": "string",
"analyzer": "english"
}
}
}
}
正如您所看到的,有一个名为“values”的嵌套对象。如果我尝试运行以下查询:
GET plugg_co/chatmessage_50813808/_search
{
query: {
nested: {
path: "values",
query: {
filtered: {
filter: {
term: { "values.idChatRoom": "id-123" }
}
}
}
}
}
}
我没有得到任何结果(索引不是空的!我检查了!)。任何的想法?
谢谢
答案 0 :(得分:0)
嵌套查询没有问题。嵌套查询很好。但由于idChatRoom
是analyzed
,因此您不应该使用term query
。相反,您应该使用match query
。将您的查询更改为:
GET plugg_co/chatmessage_50813808/_search
{
"query": {
"nested": {
"path": "values",
"query": {
"match": {
"values.idChatRoom": "id-123"
}
}
}
}
}
如果您想使用term query
,可以不对其进行分析或multifield
。有关multifield
的更多信息,请参阅https://www.elastic.co/guide/en/elasticsearch/reference/2.x/_multi_fields.html
希望它有所帮助。