Удаление полей по умолчанию из java эластичного поискового запроса - PullRequest
2 голосов
/ 20 апреля 2019

Экземпляр QueryBuider Java-клиента Elasticsearch добавляет свойства, такие как
1) order
2) min_doc_count
3) shard_min_doc_count
4) show_term_doc_count_error
5) lang
6) gap_policy

к окончательному запросу Json.Мой запрос работает, как и ожидалось, без этих свойств.Я хочу, чтобы эти свойства не были добавлены в мой окончательный запрос.

Java:

FilterAggregationBuilder aggregation = AggregationBuilders.filter("id", QueryBuilders.termsQuery("id",
                        "my-name"));
TermsAggregationBuilder lev1Agg = AggregationBuilders.terms("id").field("id");
lev1Agg.size(1);               
lev1Agg.subAggregation(AggregationBuilders.sum("familyMemberCount").field("membersInFamily"));                
lev1Agg.subAggregation(AggregationBuilders.sum("totalKidsInFamily").field("kidsInFamily"));
Map<String, String> bucketsPathsMap = new HashMap<>();
bucketsPathsMap.put("familyMemberCount", "familyMemberCount");
bucketsPathsMap.put("totalKidsInFamily", "totalKidsInFamily");
Script script = new Script("params.familyMemberCount / params.totalKidsInFamily");

BucketScriptPipelineAggregationBuilder bs = PipelineAggregatorBuilders
                        .bucketScript("myScript", bucketsPathsMap, script);

lev1Agg.subAggregation(bs);
aggregation.subAggregation(lev1Agg);
searchSourceBuilder = new SearchSourceBuilder().aggregation(aggregation);
searchSourceBuilder.size(0);

Запрос, построенный по коду выше

GET my-alias/_search
{
  "size" : 0,
  "aggregations" : {
    "id" : {
      "filter" : {
        "terms" : {
          "name" : [
            "my-name"
          ],
          "boost" : 1.0
        }
      },
      "aggregations" : {
        "id" : {
          "terms" : {
            "field" : "name",
            "size" : 1,
            "min_doc_count" : 1,
            "shard_min_doc_count" : 0,
            "show_term_doc_count_error" : false,
            "order" : [
              {
                "_count" : "desc"
              },
              {
                "_term" : "asc"
              }
            ]
          },
          "aggregations" : {
            "familyMemberCount" : {
              "sum" : {
                "field" : "membersInFamily"
              }
            },
            "totalKidsInFamily" : {
              "sum" : {
                "field" : "kidsInFamily"
              }
            },
            "myScript" : {
              "bucket_script" : {
                "buckets_path" : {
                  "familyMemberCount" : "familyMemberCount",
                  "totalKidsInFamily" : "totalKidsInFamily"
                },
                "script" : {
                  "source" : "params.familyMemberCount / params.totalKidsInFamily",
                  "lang" : "painless"
                },
                "gap_policy" : "skip"
              }
            }
          }
        }
      }
    }
  }
}
...