我可以使用嵌套查询获得嵌套字段的结果,但是使用以下查询无法获得嵌套字段的突出显示结果。它只能突出显示普通字段。有什么办法吗?我还需要Java API。使用Elasticsearch 5.4.1
有带有嵌套字段的样本索引图:
PUT testix
{
"mappings": {
"topic": {
"properties": {
"section": {
"type": "nested"
}
}
}
}
}
示例文档:
POST testix/topic/
{
"id" : "5",
"name" : "Document APIs",
"section": [
{
"id" : "11",
"topic_id" : "5",
"type_id" : "3",
"text" : "Semper feugiat nibh sed pulvinar. Diam vulputate ut pharetra sit amet aliquam id. Nunc consequat interdum varius sit amet mattis vulputate."
},
{
"id" : "12",
"topic_id" : "5",
"type_id" : "2",
"text" : "Ipsum faucibus vitae aliquet nec ullamcorper sit. Odio eu feugiat pretium nibh. 2525"
}
]
}
POST testix/topic/
{
"id" : "7",
"name" : "Search APIs",
"section": [
{
"id" : "15",
"topic_id" : "7",
"type_id" : "3",
"text" : "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 2525"
},
{
"id" : "16",
"topic_id" : "7",
"type_id" : "2",
"text" : "Nam at lectus urna duis convallis convallis tellus id interdum. Bibendum arcu vitae elementum curabitur vitae nunc sed velit dignissim. Blandit massa enim nec dui nunc mattis enim ut. "
},
{
"id" : "17",
"topic_id" : "7",
"type_id" : "6",
"text" : "Sodales ut etiam sit amet nisl purus in. Laoreet non curabitur gravida arcu ac tortor dignissim. "
}
]
}
POST testix/topic/
{
"id" : "9",
"name" : "Request Body Search",
"section": [
{
"id" : "3",
"topic_id" : "9",
"type_id" : "1",
"text" : "Et malesuada fames ac turpis egestas maecenas pharetra convallis. Consectetur purus ut faucibus pulvinar elementum integer enim neque. Lorem sed risus ultricies tristique."
},
{
"id" : "4",
"topic_id" : "9",
"type_id" : "2",
"text" : "Egestas diam in arcu cursus. 2525 Tellus integer feugiat scelerisque varius morbi enim nunc faucibus."
},
{
"id" : "5",
"topic_id" : "9",
"type_id" : "4",
"text" : "At consectetur lorem donec massa. Eu augue ut lectus arcu bibendum at varius vel pharetra."
}
]
}
POST testix/topic/
{
"id" : "19",
"name" : "Request Body Search",
"section": [
{
"id" : "13",
"topic_id" : "19",
"type_id" : "1",
"text" : "Egestas diam in arcu cursus. Tellus integer feugiat scelerisque varius morbi enim nunc faucibus."
},
{
"id" : "15",
"topic_id" : "19",
"type_id" : "4",
"text" : "Vel elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi. "
}
]
}
并查询结果:
GET testix/_search
{
"query": {
"nested": {
"path": "section",
"query": {
"bool": {
"must": [
{
"query_string": {
"query": "section.text:2525",
"fields": [
"section.text^2.0"
]
}
},
{
"terms": {
"section.type_id": ["3"]
}
}
]
}
}
}
},
"highlight": {
"pre_tags": [
"<mark>"
],
"post_tags": [
"</mark>"
],
"fragment_size": 50,
"number_of_fragments": 3,
"fragmenter": "simple",
"fields": {
"section.text": {}
}
}
}