Kibana 基于词位和模糊的ElasticSearch搜索

rur96b6h  于 2023-09-28  发布在  Kibana
关注(0)|答案(1)|浏览(163)

我是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”(基于术语位置,有或没有拼写错误)获得这样的结果:

  • 杜耶拉考德芒
  • Douille 1
  • 10 Douilles
  • 第1节
  • Raccordement 2

我使用Elasticsearch 7。
你知道为什么吗?
谢谢你的帮助

ou6hu8tu

ou6hu8tu1#

你问题中的数据。此查询可帮助您:

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"
        }
      }
    ]
  }
}

相关问题