spring-data-elasticsearch-2.0.4.RELEASE startsWith不适用于非分析字段

时间:2018-11-05 06:09:17

标签: elasticsearch spring-data spring-data-elasticsearch elasticsearch-2.0

我正在使用ElasticserachRepoistory,以下查询不适用于未分析的字符串:  findByNameStartingWithIgnoreCase(字符串名称);

如果我对字段进行分析,则它适用于字符串中的每个单词,而不是短语的开头。

在非分析领域中最简单的方法是什么?我需要它来自动完成

1 个答案:

答案 0 :(得分:1)

我已经完成了自定义分析器,它的工作原理是:

@Document(indexName = "db", type = "user")
@Getter
@Setter
@Setting(settingPath = "/settings.json")
public class User{


    @org.springframework.data.annotation.Id
    private Long id;

    @Field(analyzer= "autocomplete",type = FieldType.String )
    private String name;

    }

json文件:

   { 
"index": {
"number_of_shards": 1,
"analysis": {
  "filter": {
    "autocomplete_filter": {
      "type": "edge_ngram",
      "min_gram": 1,
      "max_gram": 20
    }
  },
  "analyzer": {
    "autocomplete": {
      "type": "custom",
      "tokenizer": "keyword",
      "filter": [
        "lowercase",
        "autocomplete_filter"
      ]
     }
    }
   } 
  }
}