假设,我的表有2个字段:user_name和age 我想查看列表用户名:[john,mary,jim],该用户有"年龄"是20.我该怎么办? 我想我将在下面合并两个查询:
术语查询: { "术语#34; :{ "用户" :[" john"," mary"," jim" ] } }
并匹配查询:
{ "查询":{ "匹配":{ "年龄":20 } } }
但我不确定。请帮我。感谢。
答案 0 :(得分:3)
terms
查询似乎适合该名称。但是,我建议使用term
过滤器作为“年龄”,因为它是一个数值。通常,match
查询适用于您计划进行全文搜索的analyzed
字段。
例如,您可以使用filtered
查询将两个搜索条件链接在一起,如下所示:
{
"query": {
"filtered": {
"query": {
"terms": {
"user_name": ["john","mary","jim"]
}
},
"filter": {
"term": {
"age": 20
}
}
}
}
}
另一种可能性是使用bool
查询来合并搜索条件。例如。
{
"query": {
"bool": {
"must": [
{
"terms": {
"user_name": ["john","mary","jim"]
}
},
{
"term": {
"age": 20
}
}
]
}
}
}