没有analizinig

时间:2017-05-03 11:32:07

标签: elasticsearch full-text-search

当前的弹性映射:

"properties": {

"content": {

    "type": "text",

       "term_vector":"with_positions_offsets",

     "fields": {

         "keyword": {

             "type": "keyword",

             "ignore_above": 256

         }

    },

     "analyzer": "russian"

   }        
}

字段“内容”包含网站抓取的结果,正好是从标签中剥离的“正文”标记内容页面。 任务是实现这种领域的三种搜索。 1.所有指定的单词 2.任何指定的单词 3.正好在文中

1例 - match_phrase 2个案例 - 匹配 对于3个案例 - 必须有match_phrase而不进行分析,因为使用“俄语”分析器它会发现这个不同的结尾和变形的语言

没有运气地试过这个问题:

"query": {
"bool": {
    "must": [
     {
      "match_phrase": {   
           "content":  {
               "query": "some search phraze",
       "analyzer": "keyword"
        }
       }
     }
  ]
}

2 个答案:

答案 0 :(得分:1)

对于exact匹配查询,请使用Term Query。因此,您的查询应如下所示:

GET _search
{
  "query": {
    "term" : { "content.keyword" : "some search phraze" } 
  }
}

答案 1 :(得分:0)

自我回答

This回答给了我很多帮助

添加额外字段" raw"解决了财产问题。

"properties": {
    "content": {
        "type": "text",
        "term_vector":"with_positions_offsets",
        "fields": {
            "keyword": {
                "type": "keyword",
                "ignore_above": 256
            },
            "raw": {
                "type": "text",
                "index": "analyzed"
            }
        },
    "analyzer": "russian"
    }        
}  

搜索查询如下所示:

"query": {
    "bool": {
        "must": [
             {
                 "match_phrase": {   
                     "content.raw":  {
                          "query": "some search phraze",
                     }
                 }
             }
         ]
    }