elasticsearch elasticsearch跨多个字段查询具有模糊性的术语
我正在建立一个商业搜索引擎,根据用户输入的查询来搜索商业联系信息。业务信息以以下形式存储在elasticsearch索引中:elasticsearch elasticsearch跨多个字段查询具有模糊性的术语,elasticsearch,elasticsearch,我正在建立一个商业搜索引擎,根据用户输入的查询来搜索商业联系信息。业务信息以以下形式存储在elasticsearch索引中: "_source" : { "id" : 53, "name" : "Judge Pouros", "email" : "roob.alberto@example.com", "phone" : "+1-783-850-2127", "created_at" : "02/1
"_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)"
}
]
}
}
}
假设一位客户正在搜索“example travel renfrewshire”。我希望返回上述结果。我当前正在使用以下查询字符串:
{
"query": {
"query_string": {
"query": "*example*travel*renfrewshire*"
}
}
}
但没有返回任何结果。我要做的是在用户查询中查找包含模糊术语的文档,以允许错误销售
我曾考虑过用模糊性匹配特定术语,但我不知道用户查询的术语可能匹配,所以我需要对照所有术语进行检查
有没有更简单的查询可以做到这一点?因为您想搜索整个文档,我建议使用 这将对提供的字段执行全文搜索 您的查询如下所示:
{
"query": {
"multi_match" : {
"query" : "example travel renfrewshire",
"fields" : [ * ]
}
}
}
您还可以在匹配/多匹配查询中定义模糊性
看一看这张照片
编辑:
如文件所述:
如果未提供任何字段,则multi_match查询默认为index.query.default_字段索引设置,后者又默认为*提取映射中符合术语查询条件的所有字段,并筛选元数据字段。然后将所有提取的字段合并以生成查询
您甚至不必定义字段设置,因为它默认为*(所有符合条件)。因为您希望搜索整个文档,我建议使用 这将对提供的字段执行全文搜索 您的查询如下所示:
{
"query": {
"multi_match" : {
"query" : "example travel renfrewshire",
"fields" : [ * ]
}
}
}
您还可以在匹配/多匹配查询中定义模糊性
看一看这张照片
编辑:
如文件所述:
如果未提供任何字段,则multi_match查询默认为index.query.default_字段索引设置,后者又默认为*提取映射中符合术语查询条件的所有字段,并筛选元数据字段。然后将所有提取的字段合并以生成查询
您甚至不必定义字段设置,因为它默认为*(所有符合条件)。您要搜索哪个字段?用户术语可以匹配文档中的任何字段,因此我确实需要搜索所有字段。您要搜索哪个字段?用户术语可以匹配文档中的任何字段,因此,我确实需要针对所有字段进行搜索请记住,所有字段上的multi_匹配当然比在定义的字段集上搜索的查询慢/资源密集(这并不意味着Elasticsearch无法处理这一点!)。因此,也许您可以找出哪些字段中永远不会出现这些术语。请记住,所有字段上的多重匹配当然比在定义的字段集上搜索的查询慢/资源密集(这并不意味着Elasticsearch无法处理!)。因此,也许你可以找出哪些字段中永远不会出现这些术语。