elasticsearch,在字段中找到确切的短语

elasticsearch, find exact phrase in a field

我想在单个字段中搜索确切的短语..这是我的方法:

"query": {
  "match_phrase": {                                             
    "word": "developer"
  }
}

但要点是此查询将查找任何包含此关键字的文档 developer :

喜欢"word": "developer""word": "php developer"

如何创建查询,当我搜索 developer 时,只需 return "word": "developer" doc,

当我搜索 php developer return "word": "php developer" doc

谢谢

简单来说,如果您的字段 wordkeyword 类型,您就可以使用 Term Query,如下所示:

POST <your_index_name>/_search
{
  "query": {
    "term" : { "word" : "developer" } 
  }
}

如果您只有 word 类型 text,我建议您将其 keyword 字段添加为 multi-fields,这样您就可以使用word 用于文本匹配,word.keyword 用于精确匹配。

PUT <your_index_name>
{
  "mappings": {
    "_doc": {
      "properties": {
        "word": {
          "type": "text",
          "fields": {
            "keyword": { 
              "type":  "keyword"
            }
          }
        }
      }
    }
  }
}