Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.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 hibernate搜索中索引时屏蔽敏感数据_Java_Spring_Hibernate_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Hibernate Search - Fatal编程技术网 elasticsearch,hibernate-search,Java,Spring,Hibernate,elasticsearch,Hibernate Search" /> elasticsearch,hibernate-search,Java,Spring,Hibernate,elasticsearch,Hibernate Search" />

Java 在spring boot hibernate搜索中索引时屏蔽敏感数据

Java 在spring boot hibernate搜索中索引时屏蔽敏感数据,java,spring,hibernate,elasticsearch,hibernate-search,Java,Spring,Hibernate,elasticsearch,Hibernate Search,我使用的是SpringBoot2.0.2和HibernateSearchVersion5.10.2。 我将以下类作为我的实体: @Entity @Table(name = "CUSTOMERS") @Indexed(index = "indexes_customer") @JsonIgnoreProperties(ignoreUnknown = true) public class Beneficiary implements Serializable {

我使用的是SpringBoot2.0.2和HibernateSearchVersion5.10.2。 我将以下类作为我的实体:

    @Entity
    @Table(name = "CUSTOMERS")
    @Indexed(index = "indexes_customer")
    @JsonIgnoreProperties(ignoreUnknown = true)
    public class Beneficiary implements Serializable {
        private static final long serialVersionUID = 1L;
        @Id
        @Column(name = "ID", nullable = false)
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private long id;

        @Basic
        @Column(name = "CARD_NUMBER", length = 18)
        @Field(analyze = Analyze.NO, store = Store.YES)
        @SortableField
        private String cardNumber;

        @Basic
        @Column(name = "FULL_NAME", length = 60)
        @Field(analyze = Analyze.NO, store = Store.YES)
        @SortableField
        private String fullName;
        //Getters & setters
卡片数据以纯文本形式保存,但在显示给前台用户时会被屏蔽。但是,我想在索引时屏蔽卡号。 目前,我的索引如下所示:

{
  "_index": "indexes_customer",
  "_type": "mypackage.Customer",
  "_id": "24",
  "_version": 3,
  "_score": 1,
  "_source": {
    "id": "24",
    "name": "Customer Name",
    "cardNumber": "1234567891011"
  }
}
{
  "_index": "indexes_customer",
  "_type": "mypackage.Customer",
  "_id": "24",
  "_version": 3,
  "_score": 1,
  "_source": {
    "id": "24",
    "name": "Customer Name",
    "cardNumber": "1234******1011"
  }
}
我希望它看起来更像这样:

{
  "_index": "indexes_customer",
  "_type": "mypackage.Customer",
  "_id": "24",
  "_version": 3,
  "_score": 1,
  "_source": {
    "id": "24",
    "name": "Customer Name",
    "cardNumber": "1234567891011"
  }
}
{
  "_index": "indexes_customer",
  "_type": "mypackage.Customer",
  "_id": "24",
  "_version": 3,
  "_score": 1,
  "_source": {
    "id": "24",
    "name": "Customer Name",
    "cardNumber": "1234******1011"
  }
}

谢谢

您可以索引任何属性,包括@Transient properties;这些可能包含您的自定义代码

    @Basic
    @Column(name = "CARD_NUMBER", length = 18)
    String getCardNumber(){ ..}

    @Field(analyze = Analyze.NO, store = Store.YES, name="card_number")
    @SortableField
    @javax.persistence.Transient
    String getIndexedCardNumber() {
         return maskCardNumber( getCardNumber() );
    }
或者,可以使用sophysticated,但您可以实现一个定制的
分析器来实现这一点。但是Analyzer方法会对查询结果产生一些影响,因此这取决于您有什么查询需求


老实说,我很惊讶你竟然想要索引卡号。

你可以索引任何属性,包括@Transient properties;这些可能包含您的自定义代码

    @Basic
    @Column(name = "CARD_NUMBER", length = 18)
    String getCardNumber(){ ..}

    @Field(analyze = Analyze.NO, store = Store.YES, name="card_number")
    @SortableField
    @javax.persistence.Transient
    String getIndexedCardNumber() {
         return maskCardNumber( getCardNumber() );
    }
或者,可以使用sophysticated,但您可以实现一个定制的
分析器来实现这一点。但是Analyzer方法会对查询结果产生一些影响,因此这取决于您有什么查询需求


老实说,我很惊讶你竟然想为卡号编制索引。

PCI标准规定不允许将卡号存储在数据库中!!你确定要这样做吗?这些是虚拟卡号,所以我不介意存储dataPCI标准,比如不允许在数据库中存储卡号!!你确定要这样做吗?这些是虚拟卡号,所以我不介意存储数据