У меня проблемы с головной болью с запросом Elasticsearch.
Я написал код Go с функцией отслеживания:
Шаг 1. Получите читаемый запрос от пользователя Шаг 2. Преобразуйте этот читаемый запрос в Запрос ElasticSearch Шаг 3. Выполните этот запрос ElasticSearch для ответа для пользователя
Например:
После шага 1 я получил этот запрос, как показано ниже
((camp_id = 'elasticsearch' AND title = 'abc') OR (camp_id = 'search' AND title = 'test') OR camp_id = 'ok') AND city = 'Bath' NOT authors = 'radu gheorge'
На шаге 3 , Я хочу преобразовать этот запрос в запрос Elasticsearch, как показано ниже
{
"query": {
"bool": {
"must": [
{
"bool" : {
"should": [
{
"bool" : { "must": [
{ "match": { "camp_id": "Elasticsearch" }},
{ "match": { "title": "abc" }}
] }
},
{
"bool" : { "must": [
{ "match": { "camp_id": "search" }},
{ "match": { "title": "test" }}
] }
},
{
"match": {"camp_id": "ok"}
}
]
}
},
{
"match": {"city": "Bath"}
}
],
"must_not": { "match": {"authors": "radu gheorge" }}
}
}
}
Первоначально я думаю, что могу разделить строку на OR
или AND
, но когда запрос от пользователя становится более сложным, этот идеал невозможно.
Я новичок в Elasticsearch.
Пожалуйста, помогите мне.
Заранее спасибо.