Как написать эластичный поиск в сервисе (поиск по запросу, параметры, фильтр)? - PullRequest
0 голосов
/ 02 июля 2018

Я пытаюсь реализовать упругий поиск для моего приложения Grails. Я использую версию Grails 3.3.6, упаковщик Gradle 3.1, плагин Grailsasticsearch 2.4.0 и версию эластичного поиска 5.4.1. Я изо всех сил пытаюсь передать параметр метода поиска в классе эластичного поиска. "asticsearchservice.search (запрос на закрытие, параметры, фильтр) "

Я передаю такой параметр и получаю ошибку на

1010 * спичка *

elasticSearchService.search({match(fields: ["title", "description"],
                query: q,fuzziness:'4',fuzzy_prefix_length:1)}, null,[indices: Book, types: Book, score: true])

На самом деле, здесь я пытаюсь использовать совпадение с нечеткостью, я пытался с помощью kibana и почтальона _search, используя эластичный поиск. Там работает.

POST /books/code/_search
{
  "query": {
    "match": {
      "author": {
        "query": "keeen",
        "fuzziness": 4,
        "prefix_length": 1
      }
    }
  }
}

Мне нужна такая же структура для моего запроса, сгенерированного приложением, в консоли. Но мое приложение сгенерировало структуру запросов в консоли

"query" : {
    "query_string" : {
      "query" : "grails",
      "fields" : [ ],
      "use_dis_max" : true,
      "tie_breaker" : 0.0,
      "default_operator" : "and",
      "auto_generate_phrase_queries" : false,
      "max_determinized_states" : 10000,
      "enable_position_increments" : true,
      "fuzziness" : "AUTO",
      "fuzzy_prefix_length" : 0,
      "fuzzy_max_expansions" : 50,
      "phrase_slop" : 0,
      "escape" : false,
      "split_on_whitespace" : true,
      "boost" : 1.0
    }
  }

Как я получу свой ожидаемый запрос там? Любая идея - Может кто-нибудь, пожалуйста, помогите мне?

Заранее спасибо.

1 Ответ

0 голосов
/ 23 июля 2018

Попробуйте этот код:

elasticSearchService.search([indices: Book, types: Book, score: true],
{
   "match" {
     "author"(query: "keen", "fuzziness": 4, "prefix_length": 1)
   }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...