我在尝试通过Python API查询ES服务器时匹配多个字段。但是无法弄清楚Python中的语法:
我已经尝试过了;
res = es.search(index="pyats", doc_type="router_show", body={"query": {"match": {"name": "mark"} AND {"age": "21"}}}, size=1000)
和
res = es.search(index="pyats", doc_type="router_show", body={"query": {"match_all": {"name": "mark"} AND {"age": "21"}}}, size=1000)
和
res = es.search(index="pyats", doc_type="router_show", body={"query": {"match": {"name": "mark"}}, {"match": {"age": "21"}}}, size=1000)
任何建议都将不胜感激。 没有,似乎工作。
答案 0 :(得分:1)
请确保年龄字段的类型为整数或字符串。解决问题的关键字是must
。
{
"query": {
"constant_score" : {
"filter" : {
"bool" : {
"must" : [
{ "term" : { "age" : 21 } },
{ "term" : { "name" : "mark" } }
]
}
}
}
}
}