首页 > 解决方案 > Spring Elasticsearch,创建应用趋势请求

问题描述

在我的 elasticsearch 中,我有 apk 列表,其中包含类别应用程序和游戏以及大量元数据。我必须按类别返回顶级交易 apk 列表。我的要求必须考虑并按以下最佳组合排序:

  1. 本周下载次数最多的 apk(应用程序或游戏)
  2. 最积极评价
  3. 最多评论

请问我怎么能做这种请求?我使用弹簧 2.2 和弹簧弹性搜索 3.2.4。

@Data
@NoArgsConstructor
@ToString
@Document(indexName = "apk")
public class Apk {

    @Id //The unique id
    private Long id;

    @Field(type = FieldType.Nested, includeInParent = true)
    private Rating rating = new Rating();

    @Field(type = FieldType.Nested, includeInParent = true)
    private List<Review> userReview = new ArrayList<>();

    @Field(type = FieldType.Nested, includeInParent = true)
    private Category category;

    @Field(type = FieldType.Nested, includeInParent = true)
    private SubCategory subCategory;

    private ApkStatus status = ApkStatus.INITIATED;

    private Set<String> dependencies = new HashSet<>();

    private Set<String> permissions = new HashSet<>();
    private String changes;
    private Long companyId;
    private String description;
    private String displayName;

    private String packageName = "unknown";
    private BigDecimal price = new BigDecimal(0);
    private String shortDescription;
    private String versionName = "unknown";
    private String videoUrl;
    private Boolean containsAds;
    private Boolean isFree=false;
    private long versionCode = 0;
    private String minSdkVersion;
    private String targetSdkVersion;
    private String maxSdkVersion;
    private long installs;
    private long unInstalls;
    private long size;
    private String apkName;
    private String repositoryGeneratedId;

    private String iconPath;  

    private String iconDownloadUrl;
    
    private String apkPath;  

    private String apkDownloadUrl;

    private String installHistoryString;
    private String unInstallHistoryString;
    
    @Transient
    private NavigableMap<String, Integer> installHistory = new TreeMap<>();
    @Transient
    private NavigableMap<String, Integer> unInstallHistory = new TreeMap<>();

    private Map<String, TranslatedMetadata> translatedMetadataList = new TreeMap<>();
    
    LocalizedLanguage defaultLanguage;
    
    private Date updateDate = new Date();
    private Date createDate = new Date();

提前致谢

标签: javaspringelasticsearchspring-data-elasticsearch

解决方案


推荐阅读