diff --git a/src/main/java/org/springframework/data/elasticsearch/core/AbstractElasticsearchTemplate.java b/src/main/java/org/springframework/data/elasticsearch/core/AbstractElasticsearchTemplate.java
index 4caf7f13b..6703696fd 100644
--- a/src/main/java/org/springframework/data/elasticsearch/core/AbstractElasticsearchTemplate.java
+++ b/src/main/java/org/springframework/data/elasticsearch/core/AbstractElasticsearchTemplate.java
@@ -419,7 +419,7 @@ public <T> SearchHits<T> search(MoreLikeThisQuery query, Class<T> clazz, IndexCo
 		Assert.notNull(query.getId(), "No document id defined for MoreLikeThisQuery");
 
 		MoreLikeThisQueryBuilder moreLikeThisQueryBuilder = requestFactory.moreLikeThisQueryBuilder(query, index);
-		return search(new NativeSearchQueryBuilder().withQuery(moreLikeThisQueryBuilder).build(), clazz, index);
+		return search(new NativeSearchQueryBuilder().withQuery(moreLikeThisQueryBuilder).withPageable(query.getPageable()).build(), clazz, index);
 	}
 
 	@Override
diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/MoreLikeThisQuery.java b/src/main/java/org/springframework/data/elasticsearch/core/query/MoreLikeThisQuery.java
index 9bdf6876c..8fc2d7227 100644
--- a/src/main/java/org/springframework/data/elasticsearch/core/query/MoreLikeThisQuery.java
+++ b/src/main/java/org/springframework/data/elasticsearch/core/query/MoreLikeThisQuery.java
@@ -23,6 +23,7 @@
 
 import org.springframework.data.domain.Pageable;
 import org.springframework.lang.Nullable;
+import org.springframework.util.Assert;
 
 /**
  * MoreLikeThisQuery
@@ -176,6 +177,9 @@ public Pageable getPageable() {
 	}
 
 	public void setPageable(Pageable pageable) {
+
+		Assert.notNull(pageable, "pageable must not be null");
+
 		this.pageable = pageable;
 	}
 }
diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java
index 1cd35b169..48fedcada 100755
--- a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java
+++ b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java
@@ -1113,6 +1113,49 @@ public void shouldReturnSimilarResultsGivenMoreLikeThisQuery() {
 		assertThat(content).contains(sampleEntity);
 	}
 
+	@Test // #1787
+	@DisplayName("should use Pageable on MoreLikeThis queries")
+	void shouldUsePageableOnMoreLikeThisQueries() {
+
+		String sampleMessage = "So we build a web site or an application and want to add search to it, "
+				+ "and then it hits us: getting search working is hard. We want our search solution to be fast,"
+				+ " we want a painless setup and a completely free search schema, we want to be able to index data simply using JSON over HTTP, "
+				+ "we want our search server to be always available, we want to be able to start with one machine and scale to hundreds, "
+				+ "we want real-time search, we want simple multi-tenancy, and we want a solution that is built for the cloud.";
+		String referenceId = nextIdAsString();
+		Collection<String> ids = IntStream.rangeClosed(1, 10).mapToObj(i -> nextIdAsString()).collect(Collectors.toList());
+		ids.add(referenceId);
+		ids.stream()
+				.map(id -> getIndexQuery(SampleEntity.builder().id(id).message(sampleMessage).version(System.currentTimeMillis()).build()))
+				.forEach(indexQuery -> operations.index(indexQuery, index));
+		indexOperations.refresh();
+
+		MoreLikeThisQuery moreLikeThisQuery = new MoreLikeThisQuery();
+		moreLikeThisQuery.setId(referenceId);
+		moreLikeThisQuery.addFields("message");
+		moreLikeThisQuery.setMinDocFreq(1);
+		moreLikeThisQuery.setPageable(PageRequest.of(0, 5));
+
+		SearchHits<SampleEntity> searchHits = operations.search(moreLikeThisQuery, SampleEntity.class, index);
+
+		assertThat(searchHits.getTotalHits()).isEqualTo(10);
+		assertThat(searchHits.getSearchHits()).hasSize(5);
+
+		Collection<String> returnedIds = searchHits.getSearchHits().stream().map(SearchHit::getId).collect(Collectors.toList());
+
+		moreLikeThisQuery.setPageable(PageRequest.of(1, 5));
+
+		searchHits = operations.search(moreLikeThisQuery, SampleEntity.class, index);
+
+		assertThat(searchHits.getTotalHits()).isEqualTo(10);
+		assertThat(searchHits.getSearchHits()).hasSize(5);
+
+		searchHits.getSearchHits().stream().map(SearchHit::getId).forEach(returnedIds::add);
+
+		assertThat(returnedIds).hasSize(10);
+		assertThat(ids).containsAll(returnedIds);
+	}
+
 	@Test // DATAES-167
 	public void shouldReturnResultsWithScanAndScrollForGivenCriteriaQuery() {
 
@@ -3545,6 +3588,7 @@ void shouldReturnExplanationWhenRequested() {
 		assertThat(explanation).isNotNull();
 	}
 
+	// region entities
 	@Document(indexName = INDEX_NAME_SAMPLE_ENTITY)
 	@Setting(shards = 1, replicas = 0, refreshInterval = "-1")
 	static class SampleEntity {
@@ -4322,4 +4366,5 @@ public void setText(@Nullable String text) {
 			this.text = text;
 		}
 	}
+	//endregion
 }