我是 Elasticsearch 的初学者,我尝试将查询与术语位置和模糊结合起来,但结果不是我所期望的。
我尝试过这个查询
{
"query": {
"bool": {
"must": [
{
"bool": {
"must": [
{
"query_string": {
"query": "douille~ raccordment~",
"fields": [
"name^10"
],
"default_operator": "AND",
"fuzziness": "AUTO:10,20"
}
}
],
"should": [
{
"span_first": {
"match": {
"span_multi": {
"match": {
"fuzzy": {
"name": {
"value": "douille",
"fuzziness": "AUTO"
}
}
}
}
},
"end": 1
}
},
{
"span_first": {
"match": {
"span_multi": {
"match": {
"fuzzy": {
"name": {
"value": "douille",
"fuzziness": "AUTO"
}
}
}
}
},
"end": 2
}
}
]
}
}
]
}
}
}
“raccordment”这个词拼写不好(法语)。正确的词是“raccordement”。我的索引中有一个产品“Douille Raccordement”,而产品名称中有“Douille”但没有“Raccordement”,但不在我的索引中的第一个位置。当我尝试查询时,没有结果。
我的目标是通过搜索“douille raccordment”获得此类结果(基于术语位置,有或没有拼写错误):
我使用 Elasticsearch 7。
你知道为什么吗?
感谢您的帮助
对于您问题中的这些数据。此查询可以帮助您:
POST idx_test/_bulk
{"index":{}}
{"name": "Douille Raccordement"}
{"index":{}}
{"name": "Douille 1"}
{"index":{}}
{"name": "10 Douilles"}
{"index":{}}
{"name": "Raccordement 1"}
{"index":{}}
{"name": "Raccordement 2"}
GET idx_test/_search
{
"query": {
"match": {
"name": {
"query": "douille raccordment",
"fuzziness": "AUTO"
}
}
}
}
输出:
{
"hits" : {
"hits" : [
{
"_source" : {
"name" : "Douille Raccordement"
}
},
{
"_source" : {
"name" : "Douille 1"
}
},
{
"_source" : {
"name" : "10 Douilles"
}
},
{
"_source" : {
"name" : "Raccordement 1"
}
},
{
"_source" : {
"name" : "Raccordement 2"
}
}
]
}
}