Elasticsearch(六)---查询
【摘要】 全文查询matchmatch query会对查询语句进行分词,分词后查询语句中的任何一个词项被匹配,文档都会被搜索到。如果想查询匹配所有关键词的文档,可以用and操作符连接。分词之后匹配的任意一个都可以。因为是orcurl node2:9200/books/_search?pretty -d '{ "query":{ "match":{ "title":{ "query...
全文查询
match
match query会对查询语句进行分词,分词后查询语句中的任何一个词项被匹配,文档都会被搜索到。如果想查询匹配所有关键词的文档,可以用and操作符连接。
分词之后匹配的任意一个都可以。因为是or
and操作符
match_phrase
match_phrase查询会把query内容分词,分词器可以自定义,同时文档要满足以下两个条件才会被搜索到:
- 分词后所有词项都要出现在该字段中
- 字段中的词项顺序要一致。
java编程思想 title
java 编程 思想 编程思想 java编程
match_phrase_prefix
match_phrase_prefix和match_phrase类似,不过match_phrase_prefix支持最后一个term前缀匹配:
multi_match
multi_match是match的升级,用于搜索多个字段。查询语句为"java编程",查询域为title和description,查询语句如下:
multi_match支持对要搜索的字段名称使用通配符。
也可以使用指数符指定搜索字段的权重。指定关键词出现在title中的权重是出现在description字段中的3倍。
bool查询
bool查询可以把任意多个简单查询组合在一起,使用must、should、must_not、filter选项来表示简单查询之间的逻辑,每个选项都可以出现0次到多次,含义如下:
- must:文档必须匹配must选项下的查询条件,相当于逻辑运算的AND
- should:文档可以匹配should选项下的查询条件也可以不匹配,相当于逻辑运算的OR
- must_not:与must相反,匹配该选项下的查询条件的文档不会被返回。
- filter:和must一样,匹配filter选项下的查询条件的文档才会被返回,但是filter不评分,只起到过滤作用。
假设要查询title中包含关键字java,并且price不能高于70,description可以包含也可以不包含”虚拟机”的书籍,构造bool查询语句如下:
自定义高亮片段:
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)