How to get rating summary in Magento 2?

You can try this

protected $_reviewFactory;

public function __construct(
    ...
    \Magento\Review\Model\ReviewFactory $reviewFactory,
    ...
) {
    ...
    $this->_reviewFactory = $reviewFactory;
    ...
}

public function getRatingSummary()
{
    ...
    $this->_reviewFactory->create()->getEntitySummary($product, $this->_storeManager->getStore()->getId());
    $ratingSummary = $product->getRatingSummary()->getRatingSummary();

    return $ratingSummary;
}

Or you can get $reviewFactory via ObjectManager (not the best solution)

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$reviewFactory = $objectManager->create('Magento\Review\Model\Review');

$storeId = $this->_storeManager->getStore()->getId();
$reviewFactory->getEntitySummary($product, $storeId);

$ratingSummary = $product->getRatingSummary()->getRatingSummary();

hope this helps


Get start based data and all over average

\Magento\Review\Model\ResourceModel\Review\CollectionFactory $reviewCollectionFactory, \Magento\Review\Model\ReviewFactory $reviewFactory, \Magento\Review\Model\Review $review, \Magento\Catalog\Model\ProductFactory $product

$result = $items = $starData = [];      
$idArray = [2,5]; // product id
$reviewsCollection = $this->_reviewCollectionFactory->create()
    ->addFieldToFilter('entity_pk_value',array("in" => $idArray))
    ->addStatusFilter(\Magento\Review\Model\Review::STATUS_APPROVED)
    ->addRateVotes();
$reviewsCollection->getSelect();

foreach ($reviewsCollection->getItems() as $review) {

    foreach( $review->getRatingVotes() as $_vote ) {
        $rating = [];
        $percent = $_vote->getPercent();
        $star = ($percent/20);
        $productId = $_vote->getEntityPkValue();

        $productModel = $this->_product->create();
        $product = $productModel->load($productId);             
        $countReview = $this->_reviewFactory->create()->getTotalReviews($productId,false);
        $review_id = $_vote->getReviewId();

        $rating['review_id'] = $review_id;
        $rating['product_id'] = $productId;     
        $rating['percent']   = $percent;
        $rating['star']      = $star;
        $rating['nickname']  = $review->getNickname();                  
        $items[] = $rating;
        $starData[$star][] = $rating;
    }

}

if(count($items) > 0)   {           
    $result['all'] = $items;
    $result['star'] = $starData;            

    if(isset($starData[1]))
        $result ['count'][1] = count($starData[1]);
    else
        $result ['count'][1] = 0;

    if(isset($starData[2]))
        $result ['count'][2] = count($starData[2]);
    else
        $result ['count'][2] = 0;

    if(isset($starData[3]))
        $result ['count'][3] = count($starData[3]);
    else
        $result ['count'][3] = 0;

    if(isset($starData[4]))
        $result ['count'][4] = count($starData[4]);
    else
        $result ['count'][4] = 0;

    if(isset($starData[5]))
        $result ['count'][5] = count($starData[5]);
    else
        $result ['count'][5] = 0;

    $sum = $startSum = 0;

    foreach($result['count'] as $number => $count) {
        $sum += $number * $count;
        $startSum +=  $count;   
    }

    $avg =  $sum/$startSum;

    $result ['count']['all'] = count($result['all']);
    $result ['count']['avg'] = round($avg,1);
}

return $result; 

<?php
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product = $objectManager->get('Magento\Framework\Registry')->registry('current_product');
$storeManager = $objectManager->get('Magento\Store\Model\StoreManagerInterface');
$reviewFactory = $objectManager->create('Magento\Review\Model\Review');
$storeId = $storeManager->getStore()->getId();
$reviewFactory->getEntitySummary($product, $storeId);
$ratingSummary = $product->getRatingSummary()->getRatingSummary();
?>
<div class="rating-summary item" itemprop="reviewRating" itemscope="" >
    <div class="rating-result" title="<?php echo $ratingSummary; ?>%">
        <meta itemprop="worstRating" content="1">
        <meta itemprop="bestRating" content="100">
        <span style="width:<?php echo $ratingSummary; ?>%">
            <span itemprop="ratingValue"><?php echo $ratingSummary; ?>%</span>
        </span>
    </div>
</div>