Как найти конкретную строку в нескольких возможных полях с помощью эластичного поиска
Мой поисковый запрос - "A &H", И я хочу найти любой элемент, который имеет этот термин где-то в любом из них Номер или Имяразработчика - и это должно быть точно. Я не хочу его, если у него есть А и Пробел, где-то Н или А &усилитель; без полной строки поиска. (Есть еще несколько ограничений, таких как клиент, вы увидите это в моем коде)
Я постоянно получаю слишком много результатов, в которых нет всей строки поиска. Может ли кто-нибудь сказать мне, как правильно сформулировать запрос и/или как будет выглядеть Java, чтобы собрать его вместе?
Что я уже пробовал:
{ "from" : 0, "size" : 500, "query" : { "bool" : { "must" : [ { "bool" : { "must" : { "match" : { "CustomerID" : { "query" : 5, "type" : "boolean" } } } } }, { "multi_match" : { "query" : "A & H", "fields" : [ "VendorName", "Number" ] } } ] } }, "sort" : [ { "VendorName.raw" : { "order" : "asc" } } ] }- который я построил, сделав это:
MultiMatchQueryBuilder mqbs = QueryBuilders.multiMatchQuery(criteriaQuery, "VendorName", "Number"); vendorQuery.must(mqbs); SearchSourceBuilder searchBuilder = buildBaseSearchSourceBuilder(mapPayload).query(vendorQuery); searchBuilder.sort("VendorName.raw", SortOrder.ASC); Search search = new Search.Builder(searchBuilder.toString()).addIndex(searchProperties.getVendorAliasName()) .addType(VENDOR_TYPE).build(); SearchResult result = client.execute(search);