我在 Elasticsearch 的文档中有一个contacts
字段。 contacts
字段中的每个元素本身都是一个对象。我想contacts
字段上使用term
或terms
过滤器,以便它匹配contacts.province_id
X
的文档。我尝试contacts.province_id
作为搜索字段,但它不起作用。我应该如何过滤这些类型的字段?
"contacts":
[
{
"id": 1,
"address": "address1",
"tel": "40 07 13 22",
"doctor_id": 1,
"type_id": 1,
"lng": "51.374720",
"lat": "35.781986",
"city_id": 186,
"province_id": 8,
"hour_about": null,
"place_name": null
},
{
"id": 2,
"address": "address2",
"tel": null,
"doctor_id": 1,
"type_id": 2,
"lng": "51.520313",
"lat": "35.726983",
"city_id": 186,
"province_id": 8,
"hour_about": null,
"place_name": null
},
{
"id": 3,
"address": "address3",
"tel": null,
"doctor_id": 1,
"type_id": 2,
"lng": "51.456368",
"lat": "35.797505",
"city_id": 186,
"province_id": 8,
"hour_about": null,
"place_name": null
}
]
编辑:
我试过这个查询:
GET /index_name/type_name/_search
{
"query": {
"filtered": {
"filter": {
"term": {
"contacts.province_id": 8
}
}
}
}
}
但它返回 3 个结果,我期望 5 个结果。 问题出在哪里?
感谢您的帮助。
您使用的映射是什么?如果您使用的是嵌套类型,请尝试使用嵌套过滤器。
{
"filter": {
"nested": {
"path": "contacts",
"filter": {
"term": {
"contacts.province_id": 3
}
}
}
}
}