是否可以使用 Spring 的注解为 Elasticsearch 中的映射定义 Completion Suggester?
Is it possible to use Spring's annotations to define Completion Suggester for a mapping in Elasticsearch?
我目前有以下POJO。
@Document(indexName="ws",type="vid")
public class Vid {
@Id
private String id;
@Field(type=FieldType.String, index=FieldIndex.not_analyzed)
private List<String> tags;
}
代表这个POJO的JSON如下
{
"id" : "someId",
"tags" : [ "one", "two", "three" ]
}
我想要的是定义 tags
字段的映射,以便我可以在自动完成搜索框中使用这些值。这由 Elasticsearch 的 Completion Suggester 提供支持。 https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-completion.html 的文档似乎向我建议我必须按如下方式设置映射。
{
"vid": {
"properties": {
"id": {
"type": "string"
},
"tags": {
"type": "completion",
"index_analyzer": "simple",
"search_analyzer": "simple",
"payloads": true
}
}
}
}
但是,这意味着我将不得不修改我的 POJO 和 JSON 表示。
{
"id": "someId",
"tags": {
"input": [ "one", "two", "three" ]
}
}
我在 http://blog.qbox.io/quick-and-dirty-autocomplete-with-elasticsearch-completion-suggest 找到了另一个谈论 Completions Suggesters
的好页面。但是,该页面似乎建议 tags
.
冗余
{
"id": "someId",
"tags": [ "one", "two", "three" ],
"tags_suggest": {
"input": [ "one", "two", "three" ]
}
}
最后,我在 http://docs.spring.io/spring-data/elasticsearch/docs/current/api/index.html?org/springframework/data/elasticsearch/core/completion/Completion.html 的 spring-data-elasticsearch 中找到了这个 javadoc 页面。我确定这个 class 与 Completion Suggesters
有关,但我不知道如何使用它。
有什么方法可以只使用 Spring 注释来定义 Completion Suggester
的 Elasticsearch 映射?
我没有这方面的经验,但也许这个注释对你有帮助:
Link to Spring Data Elasticsearch documentation
绝对是..
您可以像这样配置您的实体:
...
import org.springframework.data.elasticsearch.core.completion.Completion;
...
@Document(indexName = "test-completion-index", type = "annotated-completion-type", indexStoreType = "memory", shards = 1, replicas = 0, refreshInterval = "-1")
public class YoutEntity {
@Id
private String id;
private String name;
@CompletionField(payloads = true, maxInputLength = 100)
private Completion suggest;
...
}
例如检查this link。
我目前有以下POJO。
@Document(indexName="ws",type="vid")
public class Vid {
@Id
private String id;
@Field(type=FieldType.String, index=FieldIndex.not_analyzed)
private List<String> tags;
}
代表这个POJO的JSON如下
{
"id" : "someId",
"tags" : [ "one", "two", "three" ]
}
我想要的是定义 tags
字段的映射,以便我可以在自动完成搜索框中使用这些值。这由 Elasticsearch 的 Completion Suggester 提供支持。 https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-completion.html 的文档似乎向我建议我必须按如下方式设置映射。
{
"vid": {
"properties": {
"id": {
"type": "string"
},
"tags": {
"type": "completion",
"index_analyzer": "simple",
"search_analyzer": "simple",
"payloads": true
}
}
}
}
但是,这意味着我将不得不修改我的 POJO 和 JSON 表示。
{
"id": "someId",
"tags": {
"input": [ "one", "two", "three" ]
}
}
我在 http://blog.qbox.io/quick-and-dirty-autocomplete-with-elasticsearch-completion-suggest 找到了另一个谈论 Completions Suggesters
的好页面。但是,该页面似乎建议 tags
.
{
"id": "someId",
"tags": [ "one", "two", "three" ],
"tags_suggest": {
"input": [ "one", "two", "three" ]
}
}
最后,我在 http://docs.spring.io/spring-data/elasticsearch/docs/current/api/index.html?org/springframework/data/elasticsearch/core/completion/Completion.html 的 spring-data-elasticsearch 中找到了这个 javadoc 页面。我确定这个 class 与 Completion Suggesters
有关,但我不知道如何使用它。
有什么方法可以只使用 Spring 注释来定义 Completion Suggester
的 Elasticsearch 映射?
我没有这方面的经验,但也许这个注释对你有帮助:
Link to Spring Data Elasticsearch documentation
绝对是..
您可以像这样配置您的实体:
...
import org.springframework.data.elasticsearch.core.completion.Completion;
...
@Document(indexName = "test-completion-index", type = "annotated-completion-type", indexStoreType = "memory", shards = 1, replicas = 0, refreshInterval = "-1")
public class YoutEntity {
@Id
private String id;
private String name;
@CompletionField(payloads = true, maxInputLength = 100)
private Completion suggest;
...
}
例如检查this link。