小白网站建设,通付盾 建设网站,宣城网站建设费用,如何模仿一个网站Elasticsearch的搜索命令 文章目录Elasticsearch的搜索命令数据准备URI Searchq#xff08;查询字符串#xff09;analyzer#xff08;指定查询字符串时使用的分析器#xff09;df#xff08;指定查询字段#xff09;_source#xff08;指定返回文档的字段#xff09;s…Elasticsearch的搜索命令 文章目录Elasticsearch的搜索命令数据准备URI Searchq查询字符串analyzer指定查询字符串时使用的分析器df指定查询字段_source指定返回文档的字段sort排序timeout指定查询超时时间from和size查询分页TermQuery词语查询PhraseQuery短语查询AND、OR、NOT、、-布尔查询关系运算符范围查询通配符查询Request Body Search精确匹配termexists查询fuzzy查询ids查询prefix查询range查询regexp查询term查询terms查询wildcard查询模糊匹配matchmatch_all查询match查询multi_match查询match_phrase查询match_phrase_prefix查询布尔查询数据准备
PUT /movie
{settings: {index: {analysis.analyzer.default.type: ik_max_word}}
}POST /movie/_bulk
{create:{_id:1}}
{id:1,name:红海行动,type:惊悚 剧情 动作,desc:该片讲述了中国海军“蛟龙突击队”8人小组奉命执行撤侨任务突击队兵分两路进行救援但不幸遭到伏击人员伤亡同时在粉碎叛军武装首领的惊天阴谋中惨胜的故事,score:7.9}
{create:{_id:2}}
{id:2,name:流浪地球,type:科幻 灾难 冒险,desc:该片讲述了太阳即将毁灭毁灭之后的太阳系已经不适合人类生存而面对绝境人类将开启“流浪地球”计划试图带着地球一起逃离太阳系寻找人类新家园的故事,score:8.2}
{create:{_id:3}}
{id:3,name:满江红,type:悬疑 喜剧 叙事,desc:该片讲述了南宋绍兴年间岳飞死后四年秦桧率兵与金国会谈。会谈前夜金国使者死在宰相驻地所携密信也不翼而飞。一个小兵与亲兵营副统领机缘巧合被裹挟进这巨大阴谋之中宰相秦桧命两人寻找凶手和真相的故事,score:7.4}URI Search
操作简便方便通过命令行测试但是仅包含部分查询语法
使用方法如下field与value用冒号:分隔多个参数用与号分隔
GET /索引/_search?参数1field1:value1参数2field2:value2查询多个索引用逗号,分隔
GET /索引1,索引2/_search?参数1field1:value1参数2field2:value2模糊匹配索引用星号*
GET /索引*/_search?参数1field1:value1参数2field2:value2q查询字符串
GET /movie/_search?qname:红海行动泛查询不指定字段对索引中所有字段进行匹配
GET /movie/_search?q红海行动analyzer指定查询字符串时使用的分析器
GET /movie/_search?qname:红海行动analyzerik_smartdf指定查询字段
GET /movie/_search?q红海行动dfname_source指定返回文档的字段
GET /movie/_search?qname:红海行动_sourcenamesort排序
asc升序desc降序
GET /movie/_search?qname:红海行动sortid:desctimeout指定查询超时时间
默认为永不超时ms毫秒s秒m分钟
GET /movie/_search?qname:红海行动timeout3sfrom和size查询分页
from默认为0size默认为10
GET /movie/_search?qname:红海行动from0size1TermQuery词语查询
复数查询字符串需要配合空格和括号并且无前后顺序
GET /movie/_search?qname:(红海行动)
GET /movie/_search?qname:红海行动
GET /movie/_search?qname:(红海行动 满江红)
GET /movie/_search?qname:(红海行动 OR 满江红)
# 当分析器只能分出一个词语的时候双引号查询也是TermQuery
GET /movie/_search?qname:红海PhraseQuery短语查询
需要配合双引号有前后顺序区别
GET /movie/_search?qname:满江红 红海行动
GET /movie/_search?qname:红海行动 满江红
# 当分析器能分出多个词语的时候双引号查询是PhraseQuery
GET /movie/_search?qname:红海行动AND、OR、NOT、、-布尔查询
布尔查询基于词语、短语查询是它们的组合查询
既包含红海行动又包含满江红的所有的数据
GET /movie/_search?qname:(红海行动 AND 满江红)包含红海行动或者满江红的所有的数据
GET /movie/_search?qname:(红海行动 OR 满江红)
等价
GET /movie/_search?qname:(红海行动 满江红)包含红但是不包含行动
GET /movie/_search?qname:(红 NOT 行动)关系运算符
GET /movie/_search?qname:红海行动 AND qyear:(2018 AND 2023)范围查询
[]为闭区间{}为开区间
GET /movie/_search?qname:红海行动 AND qyear:{2018 TO 2018]通配符查询
?代表1个字符*代表0或多个字符
GET /movie/_search?qname:红*
GET /movie/_search?qname:满?Request Body Search
es最常用的方式查询丰富提供的完备查询语法Query DSLDomain Specific Language与URI Search类似有下面等用法
GET /movie/_search
{query: {match: {name: 红}},sort: {id : {order:desc}},_source: [score,name],from : 0,size : 2
}精确匹配term
exists查询
用来判定文档是否存在某一个字段返回包含字段的任何索引值的文档
GET /movie/_search
{query: {exists: {field: name}}
}fuzzy查询 最大模糊错误必须在0~2个词之间 搜索关键词长度为2不允许存在模糊 搜索关键词长度为35允许一次模糊01个词 搜索关键词长度大于5允许最大模糊2个词
GET /movie/_search
{query: {fuzzy: {name: 红}}
}ids查询
通过文档id进行查询
GET /movie/_search
{query: {ids: {values: [1,2]}}
}prefix查询
GET /movie/_search
{query: {prefix: {name: {value: 流}}}
}range查询
gt大于gte大于等于lt小于lte小于等于
GET /movie/_search
{query: {range: {score: {gte: 8,lt: 10}}}
}regexp查询
通过正则表达式进行查询
GET /movie/_search
{query: {regexp: {name: 红.*}}
}term查询
精确匹配单个分词
GET /movie/_search
{query: {term: {name: 满江红}}
}terms查询
一次精确匹配多个分词
GET /movie/_search
{query: {terms: {name: [满江红, 流浪地球]}}
}wildcard查询
?代表1个字符*代表0或多个字符
GET /movie/_search
{query: {wildcard: {name: 红*}}
}模糊匹配match
match_all查询
没有查询条件检索文档全部数据
GET /movie/_search
{query: {match_all: {}}
}match查询
匹配查询会将查询条件分词后查询多个分词查询关系默认是OR满足一个分词即可命中
GET /movie/_search
{query: {match: {name: 红海行动}}
}也可以指定查询分词关系以及分析器
GET /movie/_search
{query: {match: {name: {query: 红海行动,analyzer: ik_max_word,operator: AND}}}
}multi_match查询
与match类似可以在多个字段中查询
GET /movie/_search
{query: {multi_match: {query: 地球,fields: [name,desc]}}
}match_phrase查询
短语匹配查询会将查询条件分词后查询要求必须全部精确匹配且顺序固定
GET /movie/_search
{query: {match_phrase: {type: {query: 科幻冒险,slop: 1}}}
}slop参数指定可以相隔多少分词视为匹配
match_phrase_prefix查询
短语前缀匹配查询与match_phrase类似但最后一个分词允许使用前缀匹配
GET /movie/_search
{query: {match_phrase_prefix: {type: {query: 悬疑喜,max_expansions: 1}}}
}max_expansions参数指定前缀匹配的分词的数量
布尔查询
是模糊、精确查询的组合操作共有四种类型分别是mustshouldmust_not和filter must文档必须匹配must查询条件相当于逻辑与 should文档应该匹配should子句查询条件相当于逻辑或 若查询语句中有must或者filter则should只影响评分文档就算是没有匹配should中的项也会被查到即匹配should中的0项若查询语句中没有must和 filter文档必须匹配should中的至少1项 must_not与must相反匹配该选项下的查询条件的文档不会被返回相当于逻辑与 filter和must—样 匹配filter选项下的查询条件的文档才会被返回跟must的区别是filter不评分即不影响score只起到过滤功能。相当于逻辑与
GET /movie/_search
{query: {bool: {should: [{match: {name: 满江}},{match: {name: 红}},{match: {name: 地球}}],minimum_should_match: 2}}
}minimum_should_match参数指定需要满足的条件数量