当前位置: 首页 > 知识库问答 >
问题:

如何使用弹性搜索Java API设置父/子关系?

上官锦
2023-03-14

我试图使用弹性搜索Java API创建两个文档,一个构建另一个的子文档。

public void createRecord(Road road, Car car) throws Exception{
  ObjectMapper objectMapper = new ObjectMapper();

  String roadJson = objectMapper.writeValueAsString(road);
  String carJson = objectMapper.writeValueAsString(car);

  Client client = TransportClient.builder().build().addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300));

  IndexResponse response = client.prepareIndex("myIndex", "roadType").setSource(roadJson).get();

  client.prepareIndex("myIndex", "carType").setParent(response.getId()).setSource(carJson).get();
}

共有1个答案

东郭远航
2023-03-14

看起来您没有将“CarType”映射配置为将“RoadType”指定为父级。

"mappings": {
    "roadType": {
        "properties": {
        }
    },
    "carType": {
        "_parent": {
            "type": "roadType"
        },
        "properties": {
            "make": {
                "type": "string"
            },
            "model": {
                "type": "string"
            }
        }
    }
}

有关更多信息,请参见:https://www.elastic.co/guide/en/elasticsearch/guide/current/parent-child-mapping.html

 类似资料:
  • 我们在Liferay中有一个名为发布的自定义实体。它在弹性搜索中建立了索引,并包含一个名为“Journal alArticleId”的字段。 根据我们的搜索要求,如果一些用户在期刊文章中搜索任何关键字,我们必须返回包含相应期刊的“journalArticleId”的发布文档。 我找到了使用Java API实现这个的解决方案,但我正在寻找Liferay API来解决这个问题。 弹性搜索亲子数据搜索J

  • 如果弹性文档中提到长度超过上面的ignore_设置的字符串将不会被索引或存储,请任何人帮助解释关于上述ignore的疑问。对于字符串数组,上面的ignore_将分别应用于每个数组元素,长度大于上面的ignore_的字符串元素将不会被索引或存储。 这是否意味着,如果我添加的数据长于长度,那么它将不允许在ES中发布数据 https://www.elastic.co/guide/en/elasticse

  • 我使用Spring数据弹性搜索用于搜索/缓存目的。我需要执行一个使用child(TermCache)和parent(ConceptCache)属性的查询,并返回子对象的实例(这意味着我不能使用嵌套对象)。 我有以下结构: 我需要一个关于如何处理这类任务的提示;我应该使用两个单独的查询,还是应该以某种方式获取父对象的属性,或者其他什么?

  • 我在启动弹性搜索时有以下错误。弹性搜索是通过Ansibles进行的:

  • 来源完全错误... 希望有人能帮助马克

  • 由于已经有很多关于连字符的问题,我已经尝试了以下解决方案: 使用字符筛选器:ElasticSearch-在名称中使用连字符进行搜索。 所以我做了这个映射: 所以char筛选器似乎没有在搜索字符串上执行?我该怎么做才能让它起作用?