You're viewing an archived version of our docs. Check out our current documentation →

Upsert a composition rule

Upsert a Composition Rule for the specified composition ID.

Usage

Required ACL: editSettings
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import com.algolia.api.CompositionClient;
import com.algolia.config.*;

CompositionClient client = new CompositionClient("ALGOLIA_APPLICATION_ID", "ALGOLIA_API_KEY");

client.putCompositionRule(
  "compositionID",
  "rule-with-exernal-source",
  new CompositionRule()
    .setObjectID("rule-with-exernal-source")
    .setDescription("my description")
    .setTags(Arrays.asList("tag1", "tag2"))
    .setEnabled(true)
    .setValidity(Arrays.asList(new TimeRange().setFrom(1704063600L).setUntil(1704083600L)))
    .setConditions(
      Arrays.asList(
        new Condition().setAnchoring(Anchoring.CONTAINS).setPattern("harry"),
        new Condition().setAnchoring(Anchoring.CONTAINS).setPattern("potter")
      )
    )
    .setConsequence(
      new CompositionRuleConsequence().setBehavior(
        new CompositionBehavior().setInjection(
          new Injection()
            .setMain(
              new Main().setSource(
                new CompositionSource().setSearch(
                  new CompositionSourceSearch()
                    .setIndex("my-index")
                    .setParams(new MainInjectionQueryParameters().setFilters("brand:adidas"))
                )
              )
            )
            .setInjectedItems(
              Arrays.asList(
                new InjectedItem()
                  .setKey("injectedItem")
                  .setSource(
                    new ExternalSource().setExternal(
                      new External()
                        .setIndex("my-index")
                        .setParams(new BaseInjectionQueryParameters().setFilters("brand:adidas"))
                        .setOrdering(ExternalOrdering.USER_DEFINED)
                    )
                  )
                  .setPosition(0)
                  .setLength(3)
              )
            )
        )
      )
    )
);