Как индексировать родительские и дочерние документы с помощью java API в Elasticsearch версии 6.2.1

Я не могу получить родительские/дочерние документы из ES на основе моей реализации ниже.

ШАГ 1: Отношения

{
  "versionjoin": {
    "properties": {
      "my_join_field": {
        "type": "join",
        "relations": {
          "version": "accountversion"
        }
      }
    }
  }
}

ШАГ 2: Вот как я индексирую родительский документ.

{
    String pattern = YYYY_MM_DD_HH_MM_SS;
                            SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
                            String date = simpleDateFormat.format(index_timestamp);
                            JSONObject obj = new JSONObject();
                            JSONObject joinObject = new JSONObject();
                            obj.put(VERSIONNUMBER, versionNumber);
                            obj.put(VERSIONDATE, date);
                            obj.put("my_join_field","version");

                                            client.prepareIndex(
                                                    versionIndexName,
                                                    versionJoinType)
                                                    .setId(versionNumber)
                                                    .setSource(obj.toString(),XContentType.JSON)
                                                    .execute()
                                                    .actionGet();
                                    }

ШАГ 3: Вот как я пытаюсь проиндексировать дочерний документ.

JsonNode node = serializeMapper.readTree(json);
ObjectNode addedNode = ((ObjectNode) node).putObject("my_join_field");
addedNode
        .put("name", "accountversion")
        .put("parent", association.getVersion());
String modifiedJson = serializeMapper.writeValueAsString(addedNode);

indexResponse = client.prepareIndex(versionIndexName, versionJoinType)
                        .setId(String.valueOf(association.getId() + ":" +
                                                association.getVersion()))
                        .setRouting(association.getVersion())
                        .setSource(modifiedJson,XContentType.JSON).get();

Когда я пытаюсь получить документы, используя идентификатор документа и маршрутизацию, я не вижу никаких документов в результате. Недавно я перенес ES с версии 2.4 на версию 6.2 и изменил приведенную выше реализацию, чтобы читать родительские и дочерние документы из одного и того же индекса. Поскольку поддержка типов устарела в ES 6.2. Может ли кто-нибудь предложить, если я делаю что-то не так.


person Abhi.G    schedule 28.03.2018    source источник


Ответы (1)


Родительский и дочерний элементы должны храниться в одних и тех же осколках, поэтому убедитесь, что вызов setRouting использует ту же маршрутизацию, что и родительский.

person Dario Balinzo    schedule 28.03.2018
comment
Я устанавливаю маршрутизацию дочернего документа как ту же маршрутизацию родительского документа. - person Abhi.G; 29.03.2018