У нас есть индекс со следующими полями, и существует требование предоставить пользователю автоматическое предложение путем поиска данных по всем полям сопоставления текста и ключевых слов в индексе
{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 1,
"analysis": {
"filter": {
"autocomplete_filter": {
"type": "edge_ngram",
"min_gram": 1,
"max_gram": 20
}
},
}
},
"mappings": {
"properties": {
"id": {
"type": "text"
},
"title": {
"type": "text"
},
"date": {
"type": "date",
"format": "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
},
"subject": {
"type": "text"
},
"title_suggest": {
"type": "completion",
"analyzer": "simple",
"preserve_separators": true,
"preserve_position_increments": true,
"max_input_length": 50
},
"subject_suggest": {
"type": "completion",
"analyzer": "simple",
"preserve_separators": true,
"preserve_position_increments": true,
"max_input_length": 50
}
"fieldOr": {
"type": "text"
},
"fieldsTa": {
"type": "text"
},
"notes": {
"type": "text"
},
"fileDocs": {
"type": "nested",
"properties": {
"fileName": {
"type": "text",
"analyzer": "autocomplete",
"search_analyzer": "standard"
},
"fileContent": {
"type": "text",
"analyzer": "autocomplete",
"search_analyzer": "standard"
},
"docType": {
"type": "keyword"
},
"opinionId": {
"type": "integer"
}
}
},
"fileMeta": {
"type": "nested",
"properties": {
"url": {
"type": "text"
},
"name": {
"type": "text"
}
}
}
}
}
}
Я пытался Завершение Предложите, но оно работает с 1 полями. Я создал 2 поля с * -suggest в индексе и попытался создать Suggest, используя завершениеSuggest
SuggestBuilders.completionSuggestion("my_index_suggest").text(input);
Но оно поддерживает только 1 поле. Я использую ES 7.6.3 с Java HighLevel Rest Client, и он работает для 1 полей. Какие изменения мне нужно сделать, чтобы поддерживать несколько полей. Это возможно с помощью поиска JSON? Если да, то я могу создать json с помощью Xcontentbuilder и сделать автоматическое предложение?