也可以匹配多个字段,例如Name = A或Surname = A或Name = b或Surname = b
{
"filter": {
"bool": {
"should": [
{
"term": {
"Name": "A"
}
},{
"term": {
"Name": "B"
}
}
]
}
},"sort": [
{
"Pub": {
"Rank": "desc"
}
}
]
}
答案 0 :(得分:0)
在布尔查询中,must
表示所有查询必须求值为true(因此就像逻辑AND),而should
表示至少有一个必须求值为true(因此就像逻辑OR)
要与名称完全匹配,您需要使用Keyword analyzer。这将停止在空格上标记名称,因此“William RIker”将被索引为(关键字分析器)[“William Riker”]或(默认分析器)[“William”,“Riker”]。在默认情况下,它将匹配“William”或“Riker”的术语查询。在关键字的情况下,它只匹配全名。
要做你想做的事,“Name = A或Surname = A或Name = b或Surname = b”那么你可以制作4个条款。
{ "bool":{ "should":[ { "term":{ "Name":"A" } }, { "term":{ "Name":"B" } }, { "term":{ "Surname":"A" } }, { "term":{ "Surname":"B" } } ] } }