我是Elasticsearch的新手.我希望在Java客户端中获得突出显示的字段.如果我在Windows提示符下运行以下查询:
{
"query": {
"filtered" : {
"query" : {
"term" : {
"title" : "western"
}
},
"filter" : {
"term" : { "year" : 1961 }
}
}
},
"highlight" : {
fields" : {
"title" : {}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我得到了很好的突出显示文本如下:
{
"_index" : "book",
"_type" : "history",
"_id" : "1",
"_score" : 0.095891505,
"_source":{ "title": "All Quiet on the Western great Front", "year": 1961}
"highlight" : {
"title" : [ "All Quiet on the <em>Western</em> great Front dead" ]
}
}
Run Code Online (Sandbox Code Playgroud)
亮点
"highlight" : {
"title" : [ "All Quiet on the <em>Western</em> great Front dead" ]
}
Run Code Online (Sandbox Code Playgroud)
可以很容易地转换为Java Map对象,"title"属性包含匹配字段的整个文本,这正是我想要的.
但是,在Java客户端中,我得到突出显示的片段,它将同一字段的突出显示文本的不同段放入文本数组中.
感谢致敬.
在Java API中,返回的默认片段数为5.因此,如果您只想返回一个片段,则需要进行设置.
client.prepareSearch("book")
.setTypes("history")
.addHighlightedField("title")
.setQuery(query)
.setHighlighterFragmentSize(2000)
.setHighlighterNumOfFragments(1);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4363 次 |
| 最近记录: |