我是弹性搜索的新手。
我已经了解了突出显示的映射和设置。 从文档中,我在该领域使用了属性" store:yes"在原始领域。但我不知道我是否在正确的地方给予。
我的映射:
"mappingtype":
{
"_timestamp":
{
"enabled": true
},
"properties":
{
"products":
{
"type":"nested",
"include_in_parent": true,
"properties":
{
"productTitle":
{
"type" : "string",
"fields" :
{
"my_ngram_title" :
{
"type":"string",
"index_analyzer": "my_ngram_analyzer",
"search_analyzer": "default"
},
"snowball_title" :
{
"type":"string",
"index_analyzer": "snowball_analyzer",
"search_analyzer": "snowball_analyzer"
},
"raw" :
{
"type" : "string",
"store": "yes",
"index" : "not_analyzed"
},
"lowercase_title" :
{
"type":"string",
"index_analyzer": "lowercase_analyzer"
}
}
}
}
}
}
}
然后在Java中,在查询形成时我使用了以下字段。
.setHighlighterPostTags("</span>")
.setHighlighterPreTags("<span class='highlight'>")
.addHighlightedField("products.productTitle.raw")
它被完美地编入索引并且在搜索时我完美地获得了搜索结果。
但在搜索结果中,results.getHighlightFields()始终为null。
另外,我需要一个以下场景的例子。
索引记录列表:[&#39; apple&#39;,&#39; orange&#39;,&#39; green apple&#39;&#39;菠萝&#39;]
搜索关键字:&#34; app&#34;
突出显示应该是:
<span class='highlight'>app</span>le
green <span class='highlight'>app</span>le
pine<span class='highlight'>app</span>le
无论如何使用elasticsearch突出显示上述内容?