略
1.1 不同字段权重
如果需要为不同字段设置不同权重,可以考虑使用 bool 查询的 should 子句来组合多个 match 查询,并为每个 match 查询设置不同的权重。
上面的查询将在 product_name 字段和 description 字段中搜索包含 "apple" 的文档,并为 product_name 字段设置权重为 3,而为 description 字段设置权重为 1。这样,在计算匹配得分时,product_name 字段的匹配将比 description 字段的匹配更加重要,因为它的权重更高。
这种方式可以灵活地控制不同字段的权重,以满足不同的搜索需求。
match_phrase 查询是 Elasticsearch 中一种用于精确匹配短语的查询方式,可以确保查询字符串中的关键词按照给定的顺序在文档中连续出现。以下是 match_phrase 查询的用法:
2.1 简单用法
match_phrase 查询可以直接指定一个字段和一个短语进行匹配。
上面的查询将在 character字段中搜索包含短语 "谦虚 态" 的文档。
2.2 位置信息
match_phrase 查询会记录匹配短语在文档中的位置信息,可以通过 slop 参数指定允许的位置偏移量。
multi_match 查询是 Elasticsearch 中一种用于在多个字段中搜索相同查询字符串的查询方式。它可以在多个字段之间执行相同的查询,并且可以指定不同字段之间的权重(boost),从而影响匹配的相对重要性。
3.1 简单用法
multi_match 查询可以直接指定一个查询字符串,然后在多个字段中进行搜索。
上面的查询将在 name和 character字段中搜索包含 "张一" 的文档。
3.2 类型匹配
multi_match 查询可以通过 type 参数指定匹配的类型,如 "best_fields"、 "most_fields"、 "cross_fields"、 "phrase"、 "phrase_prefix" 等。不同的类型在匹配方式和结果计算上有所不同。
上面的查询将使用 "best_fields" 类型在 name 和 character字段中搜索包含短语 "张一" 的文档。
在 Elasticsearch 中,query_string 是一种查询方式,用于在文本字段上执行灵活且强大的搜索操作。query_string 查询支持使用 Lucene 查询语法进行高级搜索,可以通过在查询字符串中指定不同的搜索条件、操作符和逻辑关系来构建复杂的搜索查询。
4.1 简单的关键词匹配
上面的查询将在 character字段中搜索包含关键词 "乐观" 的文档。
4.2 使用逻辑关系和操作符进行组合查询:
上面的查询将在 character字段中搜索包含关键词 "乐观" 或者 “赞扬 和 优越”的文档。
上面的查询将在 character字段中搜索包含关键词 "乐观" 或者 name字段为 "刘一" 且 age字段为"25" 且 character字段为 “优越” 的文档。
4.3 模糊搜索和通配符搜索
上面的查询将在 email字段中搜索类似于 "qq?com" 的词,其中 "?" 表示单个字符的通配符, "~" 表示模糊搜索,"*" 表示多个字符的通配符。
可以指定模糊搜索的最大编辑距离。上面的查询将在文档中搜索与 "qqcom~" 关键词的拼写相似且最大编辑距离为 1的文档。