突出显示不与术语查找过滤器一起使用

时间:2015-12-07 07:03:03

标签: elasticsearch

我是弹性搜索的新手,并且从过去几天开始探索它。我的要求是突出显示匹配的关键字。

所以我有2个指数

http://localhost:9200/skillsetanalyzer/resume/_search?fields=keySkills
output
{"took":19,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":3,"max_score":1.0,"hits":[{"_index":"skillsetanalyzer","_type":"resume","_id":"1","_score":1.0,"fields":{"keySkills":["Core
Java","J2EE","Struts 1.x","SOAP based
Web Services using JAX-WS","Maven","Ant","JMS","Apache
Storm","Kafka","RDBMS
(MySQL","Tomcat","Weblogic","Eclipse","Toad","TIBCO
product Suite (Administrator","Business
Work","Designer","EMS)","CVS","SVN"]}},

另外一个如下: -

curl -XGET 'localhost:9200/skillsetanalyzer/resume/_search?pretty' -d '
{

"query":
{"filtered":
       {"filter":
         {"terms":
            {"keySkills":
                {"index":"lookup",
                  "type":"type",
                   "id":"1",
                  "path":"terms"
                },
            "_cache_key":"1"
        }
      }
   }
},
"highlight": {
         "fields":{
              "keySkills":{}
              }
    }
}'

以下查询会返回正确的结果,但不会突出显示匹配的关键字。

[4, 3, 5, 2]

Field" KeySkills"未分析,其类型为String。我无法弄清楚这有什么问题 查询。 请帮助提供必要的指示。

〜Shweta

1 个答案:

答案 0 :(得分:0)

Highlighting针对查询,你只是过滤结果。您需要指定highlight_query以及此类

过滤器
{
  "query": {
    "filtered": {
      "filter": {
        "terms": {
          "keySkills": [
            "MR","Pig","Hive"
          ]
        }
      }
    }
  },
  "highlight": {
    "fields": {
      "keySkills": {
        "highlight_query": {
          "terms": {
            "keySkills": [
              "MR","Pig","Hive"
            ]
          }
        }
      }
    }
  }
}

我希望这会有所帮助。