Example usage for org.springframework.data.elasticsearch.core.query ScriptField ScriptField

List of usage examples for org.springframework.data.elasticsearch.core.query ScriptField ScriptField

Introduction

In this page you can find the example usage for org.springframework.data.elasticsearch.core.query ScriptField ScriptField.

Prototype

public ScriptField(String fieldName, Script script) 

Source Link

Usage

From source file:com.github.vanroy.springdata.jest.JestElasticsearchTemplateTests.java

@Test
@Ignore("Missing fields implementation in Jest")
public void shouldUseScriptedFields() {
    // given// w  w  w . j  a  v  a 2s  .c  o  m
    String documentId = randomNumeric(5);
    SampleEntity sampleEntity = new SampleEntity();
    sampleEntity.setId(documentId);
    sampleEntity.setRate(2);
    sampleEntity.setMessage("some message");
    sampleEntity.setVersion(System.currentTimeMillis());

    IndexQuery indexQuery = new IndexQuery();
    indexQuery.setId(documentId);
    indexQuery.setObject(sampleEntity);

    elasticsearchTemplate.index(indexQuery);
    elasticsearchTemplate.refresh(SampleEntity.class);

    Map<String, Object> params = new HashMap<>();
    params.put("factor", 2);
    // when
    SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
            .withScriptField(new ScriptField("scriptedRate",
                    new Script("doc['rate'].value * factor", ScriptService.ScriptType.INLINE, null, params)))
            .build();
    Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class);
    // then
    assertThat(sampleEntities.getTotalElements(), equalTo(1L));
    assertThat(sampleEntities.getContent().get(0).getScriptedRate(), equalTo(4L));
}