我面临着一个问题,与默认字段搜索ElasticSearch版本8.7
考虑使用索引名称客户和以下数据字段进行ElasticSearch
{
"customer_name":"ABC Manufacturers",
"vendor_name":"XZY Manufacturers",
"status":"Active",
"address":""
}
Map:
{
"mappings": {
"properties": {
"customer_name": {
"type": "text",
"analyzer": "string_analyzer"
},
"status": {
"type": "text",
"analyzer": "string_analyzer"
},
"vendor_name": {
"type": "text",
"analyzer": "string_analyzer"
},
...
}
}
}
设置:
{
"settings": {
"index": {
"max_ngram_diff": "15",
"routing": {
"allocation": {
"include": {
"_tier_preference": "data_content"
}
}
},
"number_of_shards": "1",
"analysis": {
"filter": {
"ngram_filter": {
"type": "edge_ngram",
"min_gram": "2",
"max_gram": "15"
}
},
"analyzer": {
"string_analyzer": {
"filter": [
"lowercase",
"ngram_filter"
],
"fuzziness": "AUTO",
"type": "custom",
"tokenizer": "standard"
},
"ngram_analyzer": {
"filter": [
"lowercase",
"ngram_filter"
],
"type": "custom",
"tokenizer": "ngram_tokenizer"
}
},
"tokenizer": {
"ngram_tokenizer": {
"type": "ngram",
"min_gram": "3",
"max_gram": "15"
}
}
}
}
},
"defaults": {
"index": {
"lifecycle": {
"name": "",
"parse_origination_date": "false",
"step": {
"wait_time_threshold": "12h"
},
"indexing_complete": "false",
"rollover_alias": "",
"origination_date": "-1"
},
"mode": "standard",
"routing_partition_size": "1",
"mapping": {
"coerce": "false",
"nested_fields": {
"limit": "50"
},
"depth": {
"limit": "20"
},
"field_name_length": {
"limit": "9223372036854775807"
},
"total_fields": {
"limit": "1000"
},
"nested_objects": {
"limit": "10000"
},
"ignore_malformed": "false",
"dimension_fields": {
"limit": "16"
}
},
"max_script_fields": "32",
"query": {
"default_field": [
"*"
],
"parse": {
"allow_unmapped_fields": "true"
}
},
"auto_expand_replicas": "false",
"recovery": {
"type": ""
},
"fielddata": {
"cache": "node"
},
"queries": {
"cache": {
"enabled": "true"
}
},
"query_string": {
"lenient": "false"
}
}
}
}
早些时候,我在8.2版本中,下面的查询工作正常,因为它搜索所有默认字段,默认情况下是 *。但升级到8.7后,我无法使用相同的查询得到结果。
看起来这个查询只从vendor_name获取结果,可能是它将vendor_name视为默认值,但在设置中我仍然可以看到默认字段为 *。8.7升级是否有任何弃用或行为变化。需要帮助,如果任何人都面临着类似的问题。
此外,如果我将字段(字段:[“customer_name”])传递给下面的查询,我将获得8.7的预期数据,但如果我将字段传递为[“customer_name”,“vendor_name”],我将不会从customer_name获得任何匹配项。
GET customers/_search
{
"query": {
"query_string": {
"query": "ABC",
"default_operator": "AND"
}
}
}
1条答案
按热度按时间mccptt671#
在Elastic团队进行调试和跟进之后,我们知道这是Elastic 8.7版本中的一个已知问题/错误。
升级到8.8.x可以帮助我们获得此修复。