查询参数中的match_phrase与字符串部分匹配。例如:如果我的match_phrase查询'状态'是'拒绝',那么它也匹配'拒绝的qc'.如下:
{
"query": {
"bool": {
"should": [
{
"match_phrase": {
"Status": "rejected"
}
}
],
"minimun_should_match":1
}
}
}
对于上述查询,我得到的响应是状态为“拒绝”和“拒绝-QC”的两个值,但我只想要“拒绝”的一个-精确匹配。
如果我尝试使用'FILTER',则会引发如下错误:
"root_cause": [
{
"type": "parsing_exception",
"reason": "unknown query [filter]",
"line": 1,
"col": 272
}
],
以上错误的有效负载为:
{
"query": {
"bool": {
"should": [
{
"filter": {
"term": {
"Status": "rejected"
}
}
}
]
}
}
}
有没有人能提出一个解决方案,我怎么才能匹配确切的字符串?谢谢:)
2条答案
按热度按时间agyaoht71#
你就快到了,就像这样:
jw5wzhpr2#
所有我必须做的匹配确切的字符串是追加'.keyword'后的'status'.像这样:
而且它会完全匹配字符串,而不是部分匹配!