Elasticsearch - Python客户端 - 如何在多个字段上匹配?

时间:2016-12-05 17:15:24

标签: python elasticsearch

我在尝试通过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)

任何建议都将不胜感激。 没有,似乎工作。

1 个答案:

答案 0 :(得分:1)

请确保年龄字段的类型为整数或字符串。解决问题的关键字是must

{
    "query": {
        "constant_score" : {
            "filter" : {
                 "bool" : {
                    "must" : [
                        { "term" : { "age" : 21 } }, 
                        { "term" : { "name" : "mark" } } 
                    ]
                }
            }
        }
    }
}