Multi Match Query для нескольких слов с оператором AND
Таким образом, мой сценарий состоит в том, что в моем приложении есть встроенный поиск, такой же, как у нас здесь, в строке заголовка сайта Udemy, и пользователь может ввести в него более одного слова. Теперь я хочу использовать этот текстовый поиск, введенный пользователем, для опроса по нескольким полям.
Мультиполя, к которым я обращаюсь, имеют следующее отображение
_mapping
{
"category": {
"type": "keyword"
},
"designers": {
"type": "nested",
"properties": {
"name": {
"type": "keyword"
}
}
},
"story": {
"type": "text"
},
"foundryName": {
"type": "text",
}
}
Моя проблема здесь заключается в том, как я могу выполнить поиск по нескольким словам, например "designerFirstName1 category1 foundryName1", и получить результаты, в которых у сопоставляемого документа есть каждое слово из любого из нескольких полей, в которых я ищу, также, поскольку я продолжаю добавлять другие слова, набор результатов должен быть уменьшенным.
запрос
{
"query": {
"bool": {
"should": [
{
"nested": {
"path": "designers",
"query": {
"match": {
"designers.name": {
"query": "designerFirstName1 category1 foundryName1",
"fuzziness": "auto"
}
}
}
}
},
{
"multi_match": {
"query": "designerFirstName1 category1 foundryName1",
"type": "cross_fields",
"fields": [
"story",
"foundryName",
"category",
]
}
}
],
"minimum_should_match": 1
}
}
}
Ожидаемый результат заключается в том, что этот тип документа должен быть выше, а затем по мере того, как мы опускаемся, результаты начинают иметь не все мультислово в каком-либо одном поле (как показано ниже)
{
"category": [
"category1",
"category2"
],
"designers": [
{
"name": "designerFirstName1 designerLastName1"
},
{
"name": "designerFirstName2 designerLastName2"
}
],
"story": "Sphinx of black quartz, judge my vow! Sex-charged fop blew my junk TV quiz.",
"foundryName": "foundryName1"
},
{
"category": [
"category2",
"category3"
],
"designers": [
{
"name": "designerFirstName1 designerLastName1"
},
{
"name": "designerFirstName2 designerLastName2"
}
],
"story": "Sphinx of black quartz, judge my vow! Sex-charged fop blew my junk TV quiz.",
"foundryName": "foundryName1"
},
{
"category": [
"category1",
"category3"
],
"designers": [
{
"name": "designerFirstName3 designerLastName1"
},
{
"name": "designerFirstName2 designerLastName2"
}
],
"story": "Sphinx of black quartz, judge my vow! Sex-charged fop blew my junk TV quiz.",
"foundryName": "foundryName1"
},
{
"category": [
"category2",
"category3"
],
"designers": [
{
"name": "designerFirstName3 designerLastName1" /*changed here comparing with the above document*/
},
{
"name": "designerFirstName2 designerLastName2"
}
],
"story": "Sphinx of black quartz, judge my vow! Sex-charged fop blew my junk TV quiz.",
"foundryName": "foundryName1"
},