term match

es中的查询请求有两种方式,一种是简易版的查询,另外一种是使用JSON完整的请求体,叫做结构化查询(DSL)。
由于DSL查询更为直观也更为简易,所以大都使用这种方式。
DSL查询是POST过去一个json,由于post的请求是json格式的,所以存在很多灵活性,也有很多形式。

match
查询匹配就会进行分词
match_phrase
要精确匹配所有同时包含
multi_match
希望两个字段进行匹配,其中一个字段有这个文档就满足的话,使用multi_match
{
“query”: {
“multi_match”: {
“query” : “我的宝马多少马力”,
“fields” : [“title”, “content”]
}
}
}



我们希望完全匹配的文档占的评分比较高,则需要使用best_fields
我们希望越多字段匹配的文档评分越高,就要使用most_fields



我们会希望这个词条的分词词汇是分配到不同字段中的,那么就使用cross_fields
{
“query”: {
“multi_match”: {
“query”: “我的宝马发动机多少”,
“type”: “cross_fields”,
“fields”: [
“tag”,
“content”
]
}
}
}



term
term是代表完全匹配,即不进行分词器分析,文档中必须包含整个搜索的词汇



https://www.cnblogs.com/yjf512/p/4897294.html



match_phrase_prefix与match_phrase相同,但是它多了一个特性,就是它允许在文本的最后一个词项(term)上的前缀匹配,如果
是一个单词,比如a,它会匹配文档字段所有以a开头的文档,如果是一个短语,比如 “this is ma” ,则它会先进行match_phrase查询,找出
所有包含短语”this is”的的文档,然后在这些匹配的文档中找出所有以”ma”为前缀的文档.



https://ld246.com/article/1512989117092



Category elasticsearch