Member 12900991 Ответов: 0

Как найти конкретную строку в нескольких возможных полях с помощью эластичного поиска


Мой поисковый запрос - "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);

0 Ответов