在弹性搜索中我们有函数:setDefaultOperator。
$query->setDefaultOperator('AND')->setFields(array('keyword'));
以上仅提供完全匹配。
$query->setDefaultOperator('OR')->setFields(array('keyword'));
上面给出了所有匹配。(但不是完全匹配)
我首先需要完全匹配然后是其他匹配。有什么想法吗?
我第一次使用弹性搜索。任何帮助将不胜感激。
答案 0 :(得分:0)
如果您想使用query_string执行此操作 那么你必须定义默认运算符才能更改默认运算符OR。
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html
使用Kibana
查看下面的完整示例PUT /phone/brand/1
{
"color" : "black",
"name" : "Samsung"
}
PUT /phone/brand/2
{
"color" : "black",
"name" : "Iphone"
}
PUT /phone/brand/3
{
"color" : "white",
"name" : "Samsung"
}
//query string
GET /phone/brand/_search
{
"query": {
"query_string": {
"fields": ["color","name"],
"default_operator": "AND",
"query": "Samsung black"
}
}
}