我的映射如下,
mapping = {
"mappings":{
"document": {
"properties": {
"title": {"type": "text"},
"users": {
"type": "nested",
"properties": {
"user_id": {"type": "integer"},
"name": {"type": "text"},
}
}
}
}
}
我可以添加数据,但是当我使用
搜索时res = es.search(index="test", body={"query": {
"nested": {
"path": "users", "query": {
"match": {'users.user_id': 1}
}
}
}
}
它返回整个文档而不是特定的行。
更多信息:
我正在为弹性搜索提供一张桌子:user_id |名称
1 ............. Joe
2 ............玛丽
如果我在搜索中将1作为user_id,我需要弹性搜索才能返回{user_id:1,name:Joe}
答案 0 :(得分:1)
你应该看一下他们使用的Nested Query bool>在通过文档上的嵌套对象进行过滤时必须。 此外,当您需要过滤时,请使用 term 而不是 match 。匹配用于全文搜索
尝试这样
res = es.search(index="test", body={"query": {
"nested": {
"path": "users",
"query": {
"bool": {
"must": [
{
term": {
'users.user_id': 1
}
}
]
}
}
}
}
}