Как запросить конкретное сопоставление в elasticsearch java api?

#java #elasticsearch

#java #elasticsearch

Вопрос:

У меня есть определение индекса следующим образом

     {
      "mappings": {
        "my_mapping1": {
          "dynamic": false,
          "_all":       { "enabled": false },
          "_source":    { "enabled": false },
          "properties": {
              "my_property1":      { "type": "long", "store": true },
          }
        },
        "my_mapping2": {


    query = QueryBuilders.matchQuery("my_property1", "123123");


    Set<String> queryIndices = new HashSet<>();
    queryIndices.add("my_index_name");

    SearchResponse searchResponse = searchBuilder(SearchType.DFS_QUERY_THEN_FETCH, query, fields,
            queryIndices.toArray(new String[queryIndices.size()]), params.getType())
            .setSize(size)
            .execute().actionGet();
 

Как мне указать, что я ищу my_mapping1 , а не my_mapping2

И последующий вопрос: имеет ли значение тип matchQuery, например, вместо string я должен запрашивать с помощью long object?

Комментарии:

1. какая-нибудь удача здесь??

Ответ №1:

Глядя на ваш исходный код, похоже, что вы не используете официальный java-высокоуровневый клиент rest (JHLRC), который доступен с версии 6.0

Пожалуйста, обратитесь к официальному API поискового запроса с использованием JHLRC, где в разделе необязательных аргументов объясняется, как передавать имена типов, в вашем случае my_mapping1 и my_mapping2 .

 SearchRequest searchRequest = new SearchRequest("posts"); 
searchRequest.types("doc"); // here you need to pass your type name.