ES DSL命令CRUD整理

ES DSL命令CRUD整理,第1张

ES DSL命令CRUD整理

一、CRUD简单使用

(1) 创建索引:PUT /index?pretty

(2) 删除索引:DELETe /index?pretty

(3) 查询索引全部内容:GET /product/_search

查询单个id:GET /product/_doc/1

查询索引: GET _cat/indices?v 查看索引的状态

(4) 插入数据:

PUT /index/_doc/id

{

JSON数据

}

PUT /product/_doc/1

{

"name": "张三",

"age": 120,

"tags": ["aaa","bbb","ccc"]

}

(5)修改字段用POST 全量替换用PUT

POST /product/_doc/1/_update

{

"doc": {

"age": 1

}

}

或者

POST /product/_update/1

{

"doc": {

"age": 5

}

}

(6)删除数据

DELETE /index/_doc/1

二、进阶语法

1、mapping

PUT /product3

{

"mappings":{

"properties":{

"desc":{ #取消字段索引

"type": "text",

"index": false

}}

"_source":{ #一般不用,一般查询时候才用

"includes":[

"name",

"price"

],

"excludes":[

"desc",

"tags"

]

}

}

}

2、元数据:_source

禁用元数据方法: “_source”: false

GET product3/_search

{

"_source": {

"includes": [ //展示字段

"owner.*",

"name"

],

"excludes": [ //不展示字段

"desc"

]

},

"query": { //查询条件为空

"match_all": {}

}

}

3、Query_string

#查询所有

GET /product/_search

#带参数

GET /product/_search?q=name:xiaomi

#分页

GET /product/_search?from=0&size=2&sort=price:asc

#精准匹配

GET /product/_search?q=data:2021-06-01

#_all搜索 相当于在所有索引字段中建索

GET /product/_search?q=2021-06-01

三、DSL请求

1、全文检索-Fulltext query:

match #查询某字段

match_all #查询全部数据

multi_match #多字段匹配

match_phrase #短语匹配 几个词都存在,且顺序不能颠倒

term #精准匹配

terms #in查找

range 范围查找 get大于等于 gt大于 lte小于等于 lt小于

bool布尔查询

match

GET /product2/_search

{

"query": { #查询某字段

"match": {

"name": "xiaomi nfc"

}

}

}

match_all #查询全部数据

{

"query": {

"match_all": {}

}

}

multi_match #多字段匹配

{

"query": {

"multi_match": {

"query": "xiaohu",

"fields": ["name","desc"]

}

}

}

match_phrase #分词后短语匹配 几个词都存在,且顺序不能颠倒,且连续

{

"query":{

"match_phrase": {

"name": "nfc xiaomi"

}

}

}

term #精准匹配,不分词匹配分词,多单词匹配不到(因为不分词)

{

"query": {

"term": {

"name": "phone"

}

}

}

keyword #全量单词,只保留256字符 。term+keyword 全量匹配256字符

{

"query": {

"term": {

"name.keyword": "xiaomi phone"

}

}

}

terms in查找

{

"query": {

"terms": {

"tags": ["AA"]

}

}

}

range 范围查找 get大于等于 gt大于 lte小于等于 lt小于

{

"query": {

"range": {

"price": {

"gte": 10,

"lt": 20

}

}

}

}

日期:now-1d/d 减一天 now/d 今天

时间:2021-06-10T08:00

2、过滤器:filter

简单实用,固定得分。效率大于 Fulltext query

{

"query": {

"constant_score": {

"filter": {

"term": {

"name": "xiaomi"

}

},

"boost": 1.2

}

}

}

布尔查询:must 必须全部满足;filter 过滤即可;must_not必须排除;should 可以满足0个1个或多个

"minimum_should_match": 1 should,如果不二插叙 包含至少一个should子句,而没有must或filter子句,则默认值为1.否则默认值为0

{

"query": {

"bool": {

"must": [

{

"match": {

"name": "xiaomi phone"

}

},

{

"match_phrase": {

"desc": "huhu shengwei"

}

}

]

}

}

}

3、分词器

char_filter 字符过滤器

filter 过滤停用词,大小写,时态转换

tokenizer 令牌过滤器,负责切词

analyzer 自定义分词器

4、中文分词器:ik分词

ik下载地址:GitHub地址

ik文件夹解压到 /usr/es/es7.9/plugins/ik文件中去

ik文件描述:

IKAnalyzer.cfg.xml:IK分词配置文件

主词库:main.idc

英文停用词:stopword.dic 不会建立在倒排索引中

特殊词库:quantifier.dic 特殊词库,计量单位等

suffix.dic 特殊词库,行政单位

surname.dic 特殊词库,百家姓

preposition:特殊词库:语气词

ik_smart ,ik_max_word

GET _analyze

{

"analyzer": "ik_max_word",

"text": ["我爱中国人民共和国"]

}

自定义添加ik分词:修改IKAnalyzer.cfg.xml配置文件,增加自定义文件即可实现

热更新:基于远程词库、基于数据库 两种方式

四、小技巧

1、查看分词结果-分词器

GET _analyze # 可以查看到分词结果

{

"analyzer": "standard",

"text": "xiaomi nfc phone"

}

2、查看字段属性

GET product2/_mapping

 五、ES学习步骤:

1、环境部署(单节点)ES部署+Kibana部署+IK分词器(单节点)_无敌小田田的博客-CSDN博客es部署+Kibana部署+IK分词器https://blog.csdn.net/qq_36602951/article/details/1217539542、基本命令整理

ES DSL命令CRUD整理_无敌小田田的博客-CSDN博客一、CRUD简单使用(1) 创建索引:PUT /index?pretty(2) 删除索引:DELETE /index?pretty(3) 查询索引全部内容:GET /product/_search查询单个id:GET /product/_doc/1查询索引: GET _cat/indices?v 查看索引的状态(4) 插入数据:PUT /index/_doc/id{JSON数据}PUT /product/_doc/1{"name": "张三","aghttps://blog.csdn.net/qq_36602951/article/details/121888259

3、ES+JAVA示例代码

CSDNhttps://mp.csdn.net/mp_blog/creation/editor/121888538

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5669820.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存