Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring boot elasticsearch@字段名不起作用_Java_Spring_<img Src="//i.stack.imgur.com/A3TTx.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">spring Data Elasticsearch - Fatal编程技术网 spring-data-elasticsearch,Java,Spring,spring Data Elasticsearch" /> spring-data-elasticsearch,Java,Spring,spring Data Elasticsearch" />

Java Spring boot elasticsearch@字段名不起作用

Java Spring boot elasticsearch@字段名不起作用,java,spring,spring-data-elasticsearch,Java,Spring,spring Data Elasticsearch,我正在使用: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.6.RELEASE</version> <relativePath/> </parent> ... <

我正在使用:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.6.RELEASE</version>
    <relativePath/>
</parent>

...

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-releasetrain</artifactId>
            <version>Moore-SR6</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
    </dependencies>
</dependencyManagement>
ES文档被编入索引,但使用字段domainName,我希望是在@field注释中指定的域名

我也尝试过@JsonPropertydomain_name,在这种情况下该字段被忽略

这是一个已知的问题吗

多谢各位

编辑复制的pom:


一点技术背景:该版本中的SpringDataElasticSearch在内部使用接口EntityMapper的实现将实体转换为Elasticsearch和back所需的JSON格式

Spring Boot自动配置实例化了一个ElasticsearchRestTemplate,该模板在内部使用DefaultEntityMapper,它只是Jackson的一个薄包装。这个实现会导致很多问题,其中之一就是属性的自定义命名

因此,从3.2版开始,有一个替代实现可用,ElasticsearchEntityMapper,但必须显式配置。您需要向应用程序中添加如下配置类:

@Configuration
public class RestClientConfig extends AbstractElasticsearchConfiguration {

    @Override
    @Primary
    @Bean
    public RestHighLevelClient elasticsearchClient() {

        ClientConfiguration clientConfiguration = ClientConfiguration.builder() //
                .connectedTo("localhost:9200") //
                .build();

        return RestClients.create(clientConfiguration).rest();
    }

    @Bean
    @Override
    public EntityMapper entityMapper() {

        ElasticsearchEntityMapper entityMapper = new ElasticsearchEntityMapper(
                elasticsearchMappingContext(), new DefaultConversionService()
        );
        entityMapper.setConversions(elasticsearchCustomConversions());

        return entityMapper;
    }
}
请注意,此处提供的Elasticsearch主机没有http://前缀,您可能希望向配置中添加其他属性,并使用$Value属性将其自动关联到此配置类中

注:


从4.0的下一个主要版本开始,旧的基于Jackson的EntityMapper将不再可用,EntityMapper的这种自定义配置将不再需要

如何配置与Elasticsearch的连接?您有Spring Data Elasticsearch的自定义配置吗?索引是已经在Elasticsearch中创建的还是自动创建的?我在索引之前尝试了自动创建和自己创建。elasticsearch的配置只是:elasticsearch:rest:uris:read timeout:10扫描您是否可以添加应用程序配置的相关部分?这是我所有的配置:````spring:jpa:hibernate:ddl auto:none数据源:驱动程序类名:com.mysql.cj.jdbc.driver url:jdbc:mysql://${mysql\u HOST:localhost}:3306/数据库用户名:用户名密码:密码elasticsearch:rest:uris:read timeout:10s用户名:密码:管理:端点:运行状况:显示详细信息:始终```这就是我配置的全部内容。文档会被索引,但java类属性名称不是@field中定义的名称。请在您的问题中添加完整的maven依赖项,而不是作为注释,否则无法重现。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.6.RELEASE</version>
        <relativePath/>
    </parent>
    <groupId>com.test</groupId>
    <artifactId>spring-es-test</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring-es-test</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <elasticsearch.version>6.8.7</elasticsearch.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-releasetrain</artifactId>
                <version>Moore-SR6</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.awaitility</groupId>
            <artifactId>awaitility</artifactId>
            <version>3.1.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>
        <dependency>
            <groupId>com.opencsv</groupId>
            <artifactId>opencsv</artifactId>
            <version>5.1</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>
@Configuration
public class RestClientConfig extends AbstractElasticsearchConfiguration {

    @Override
    @Primary
    @Bean
    public RestHighLevelClient elasticsearchClient() {

        ClientConfiguration clientConfiguration = ClientConfiguration.builder() //
                .connectedTo("localhost:9200") //
                .build();

        return RestClients.create(clientConfiguration).rest();
    }

    @Bean
    @Override
    public EntityMapper entityMapper() {

        ElasticsearchEntityMapper entityMapper = new ElasticsearchEntityMapper(
                elasticsearchMappingContext(), new DefaultConversionService()
        );
        entityMapper.setConversions(elasticsearchCustomConversions());

        return entityMapper;
    }
}