Выполнение запроса "match-phrase" в Elastic Search
это должно быть очевидно для меня, но это не так. Следующие два соответствуют только второй фразе (в данном случае "Cape Basin" )
"query": {
"match_phrase": {
"contents": {
"query": "St Peter Fm",
"query": "Cape Basin"
}
}
}
"query": {
"match_phrase": {
"contents": {
"query": ["St Peter Fm", "Cape Basin"]
}
}
}
в то время как следующие кривые с ошибкой
"query": {
"match_phrase": {
"contents": {
"query": "St Peter Fm"
},
"contents": {
"query": "Cape Basin"
}
}
}
Я хочу сопоставить все документы, содержащие обе любые фразы точно так же, как и введенные.
Обновление: См. обновление сразу над
Ответы
Ответ 1
Ваш первый запрос не является действительно допустимым объектом JSON, потому что вы дважды используете одно и то же имя поля.
Вы можете использовать bool must query для соответствия обеим фразам:
PUT phrase/doc/1
{
"text": "St Peter Fm some other text Cape Basin"
}
GET phrase/_search
{
"query": {
"bool": {
"must": [
{"match_phrase": {"text": "St Peter Fm"}},
{"match_phrase": {"text": "Cape Basin"}}
]
}
}
}