首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有模糊性的术语跨多个字段的elasticsearch查询

具有模糊性的术语跨多个字段的elasticsearch查询
EN

Stack Overflow用户
提问于 2019-10-03 08:33:00
回答 1查看 47关注 0票数 0

我正在构建一个商业搜索引擎,以搜索基于用户输入的查询的商业联系详细信息。业务信息以下列形式存储在elasticsearch索引中:

代码语言:javascript
复制
"_source" : {
          "id" : 53,
          "name" : "Judge Pouros",
          "email" : "roob.alberto@example.com",
          "phone" : "+1-783-850-2127",
          "created_at" : "02/10/2019 16:30",
          "updated_at" : "02/10/2019 16:30",
          "travel_agencies" : [
            {
              "id" : 1234,
              "abta" : "A1234",
              "name" : "The Example Travel Agency",
              "address_id" : 27,
              "email" : "zwillms@example.info",
              "comm_rate" : 14.0,
              "travel_agency_type_id" : 1,
              "address" : {
                "id" : 27,
                "line_1" : "Flat 52",
                "line_2" : "Flat 82i\nKaren Circles",
                "town" : "Kimberlyside",
                "county" : "Renfrewshire",
                "country_id" : 189,
                "postcode" : "SM3 9QR",
                "created_at" : "2019-10-02 16:31:01",
                "updated_at" : "2019-10-02 16:31:01",
                "country" : {
                  "id" : 189,
                  "code" : "MF",
                  "name" : "Saint Martin (French part)",
                  "translations" : [
                    {
                      "id" : 189,
                      "locale" : "en",
                      "country_id" : 189,
                      "name" : "Saint Martin (French part)"
                    }
                  ]
                }
              }
            }

比方说,一位顾客在寻找“伦弗雷郡旅行的例子”。我预计会把上述结果交回。我正在使用以下查询字符串:

代码语言:javascript
复制
{
    "query": {
        "query_string": {
            "query": "*example*travel*renfrewshire*"
        }
    }
}

但没有任何结果被退回。我要做的是查找包含用户查询中带有模糊性的术语的文档,以允许错误删除。

我曾经考虑过用模糊度来匹配特定的术语,但是我不知道用户查询哪些术语可能匹配,所以我需要检查所有的术语。

是否有一个更简单的查询可以做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-03 08:50:37

由于您想搜索整个文档,我建议使用多匹配查询

这将对提供的字段执行全文搜索。

您的查询如下所示:

代码语言:javascript
复制
{
  "query": {
    "multi_match" : {
      "query" : "example travel renfrewshire",
      "fields" : [ * ] 
    }
  }
}

您还可以在match/match查询上定义模糊性。

请看一下这方面的模糊性文献

编辑:

如文件所述:

如果没有提供任何字段,则multi_match查询默认为index.query.default_field索引设置,而后者则默认为*。*提取映射中有资格进行术语查询的所有字段,并过滤元数据字段。然后将所有提取的字段组合起来构建一个查询。

您甚至不必定义字段设置,因为它默认为*(所有符合条件)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58215223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档