?使用@MultiField注解給字段取別名并設(shè)置為keyword類型
@MultiField(mainField = @Field(type = FieldType.Text),
otherFields = @InnerField(suffix = "text", type = FieldType.Keyword))
private String content;
dao層如下
public interface TestRepository extends ElasticsearchRepository<TestEntity, Long> {
}
實體類如下
@Data
@ToString
@Document(indexName = "test")
public class TestEntity {
@Id
private String id;
@MultiField(mainField = @Field(type = FieldType.Text),
otherFields = @InnerField(suffix = "text", type = FieldType.Keyword))
private String content;
}
模糊查詢測試如下:
@Test
void searchMessage(){
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().
withQuery(QueryBuilders.matchQuery("content", "我")).build();
for (SearchHit<TestEntity> searchHit : elasticsearchRestTemplate.search(searchQuery, TestEntity.class)) {
System.out.println("searchHit = " + searchHit);
}
}
可以看到模糊查詢content中一共有3條數(shù)據(jù)有我這個分詞
?精準查詢?nèi)缦拢?/strong>
@Test
void searchMessage(){
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().
withQuery(QueryBuilders.termQuery("content.text", "我")).build();
for (SearchHit<TestEntity> searchHit : elasticsearchRestTemplate.search(searchQuery, TestEntity.class)) {
System.out.println("searchHit = " + searchHit);
}
}
?可以看到精準查詢就只有一條結(jié)果,符合精準查詢。文章來源:http://www.zghlxwxcb.cn/news/detail-784713.html
注意:該方法需要版本支持,具體版本未知,但是在6.6.2版本不行,而在7.17.3版本中可行文章來源地址http://www.zghlxwxcb.cn/news/detail-784713.html
到了這里,關(guān)于Elasticsearch實現(xiàn)對同一字段既能精準查詢也能模糊查詢的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!