我要插入数据如下:
PUT my_index2/doc/1
{
"key": "party",
"str_val": "THE TWITTER INC"
}
PUT my_index2/doc/2
{
"key": "party",
"str_val": "twitter inc"
}
此查询:
POST my_index2/_search
{
"query": {
"query_string": {
"default_field": "str_val",
"query": "*twitter*"
}
}
}
正确返回两个结果。如果我将查询略微更改为:
POST my_index2/_search
{
"query": {
"query_string": {
"default_field": "str_val",
"query": "*the twitter*"
}
}
}
我希望只有一个结果,因为*the twitter*
应该只匹配“ THE TWITTER INC”,而不匹配“ twitter inc”。但是返回了两个结果。
为什么我的搜索返回的匹配太多?
答案 0 :(得分:2)
这是因为query_string的default_operator
是OR
。您始终可以使用explain:true
来知道如何返回结果。如下所示:
POST my_index2/_search
{
"query": {
"query_string": {
"default_field": "str_val",
"query": "*the twitter*"
}
},
"explain": true
}
对于您的情况,您需要明确提及AND
以仅返回两个词都匹配的文档,即the
和twitter
POST my_index2/_search
{
"query": {
"query_string": {
"default_field": "str_val",
"query": "*the twitter*",
"default_operator": "AND"
}
}
}