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

Create or update or delete composition rules

Create or update or delete multiple composition rules.

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
54
55
56
57
58
59
60
import com.algolia.api.CompositionClient;
import com.algolia.config.*;

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

client.saveRules(
  "rule-with-exernal-source",
  new CompositionRulesBatchParams().setRequests(
    Arrays.asList(
      new RulesMultipleBatchRequest()
        .setAction(Action.UPSERT)
        .setBody(
          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)
                      )
                    )
                )
              )
            )
        )
    )
  )
);