【发布时间】:2020-10-01 22:31:29
【问题描述】:
我在 Elasticsearch 中有如下文档:
{
"_index" : "demo_index",
"_type" : "doc",
"_id" : "user_122",
"_version" : 4,
"found" : true,
"_source" : {
"id" : 1520488,
"doc_type" : "user",
"user_email" : "neeraj@test.com",
"user_first_name" : "Neeraj",
"user_last_name" : "Goel"
}
}
以下是返回零结果的查询。
注意:仅当全名在索引中分为 user_first_name 和 user_last_name 字段时才会发生这种情况。
{
"index": "demo_index",
"type": "doc",
"body": {
"from": 0,
"size": "200",
"query": {
"bool": {
"must": [
{
"term": {
"doc_type": "user"
}
},
{
"term": {
"user_status": 1
}
},
{
"multi_match": {
"query": "neeraj goel",
"operator": "AND",
"fuzziness": "AUTO",
"fields": [
"user_first_name.edge_ngram",
"user_last_name.edge_ngram"
]
}
}
],
"should": {
"prefix": {
"user_first_name.sort": "neeraj goel"
}
}
}
},
"sort": {
"_score": {
"order": "desc"
}
}
}
}
索引中使用的edge_ngram设置为:
{
"edge_ngram_tokenizer": {
"token_chars": [
"letter"
],
"min_gram": "2",
"type": "edge_ngram",
"max_gram": "8"
}
}
映射:
{
"user_first_name": {
"type": "text",
"fields": {
"edge_ngram": {
"type": "text",
"analyzer": "edge_ngram_analyzer"
},
"ngram": {
"type": "text",
"analyzer": "ngram_analyzer"
},
"raw": {
"type": "keyword"
}
},
"analyzer": "standard"
}
}
我无法弄清楚我的查询出了什么问题,因为如上所述,当文档中没有 user_last_name 时,查询工作正常。
谁能帮我解决这个问题。
谢谢。
【问题讨论】:
-
您提供的数据不足以重现问题,请更清楚地说明您想要实现的目标
标签: elasticsearch elasticsearch-5