【发布时间】:2017-01-23 23:24:18
【问题描述】:
我的 copy_to 可以正常工作以进行完全匹配,但我无法正确设置部分匹配。以下是我的映射/设置和查询以及预期和实际结果。
设置:
{
"test": {
"settings": {
"index": {
"analysis": {
"filter": {
"ngram_filter": {
"type": "edge_ngram",
"min_gram": "1",
"max_gram": "15"
}
},
"analyzer": {
"ngram_analyzer": {
"filter": [
"lowercase",
"ngram_filter"
],
"type": "custom",
"tokenizer": "standard"
}
}
},
"number_of_shards": "1",
"number_of_replicas": "1",
}
}
}
}
映射:
POST /test/_mapping/name
{
"name": {
"properties": {
"vital": {
"properties": {
"first": {
"type": "string",
"copy_to": "full_name",
"term_vector": "yes",
"analyzer": "ngram_analyzer",
"search_analyzer": "standard"
},
"last": {
"type": "string",
"copy_to": "full_name",
"term_vector": "yes",
"analyzer": "ngram_analyzer",
"search_analyzer": "standard"
},
"full_name": {
"type": "string",
"term_vector": "yes",
"analyzer": "ngram_analyzer",
"search_analyzer": "standard"
}
}
}
}
}
}
发布:
POST /test/name
{
"vital": {
"first": "Tom",
"last": "Doe"
}
}
现在当我进行搜索时...
GET /test/name/_search
{
"query": {
"match": {
"full_name": {
"query": "Tom Doe",
"operator": "and"
}
}
}
}
...我得到了结果!! Hurrraaaay,但如果我进行搜索....
GET /test/name/_search
{
"query": {
"match": {
"full_name": {
"query": "Tom Do",
"operator": "and"
}
}
}
}
...我没有返回任何结果:(我希望部分匹配也适用于全名。作为另一个,我不能成功地对名字和姓氏进行部分匹配。只是全名不起作用. 我该怎么办?
【问题讨论】:
标签: search elasticsearch mapping settings partial