1. 程式人生 > >elasticsearch建立multi-fields欄位及修改非multi-fields欄位為multi-fields欄位及multi-field欄位的不同的analyzer進行分析和搜尋

elasticsearch建立multi-fields欄位及修改非multi-fields欄位為multi-fields欄位及multi-field欄位的不同的analyzer進行分析和搜尋

本文使用的elasticsearch是5.2.1,官方的multi-fields例子參見 https://www.elastic.co/guide/en/elasticsearch/reference/5.3/multi-fields.html

建立一個index及type和mapping 及setting 和analyzer和search_analyzer,注意此時已經是multi-fields了,如下:

PUT /test/
{
    "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "tokenizer": "my_tokenizer"
        },
        "my_analyzer2": {
          "type":      "pattern",
          "pattern":   "\\W+|_", 
          "lowercase": true
        }
      },
      "tokenizer": {
        "my_tokenizer": {
          "type": "pattern",
          "pattern": "\\w+|\"(.+?)\"",
          "group":0
        }
      }
    }
  },
  "mappings": {
    "tech": {
      "properties": {
        "body": {
          "type": "text",
          "analyzer":"standard",
          "search_analyzer": "standard",
          "fields": {
          "syh": {
            "type": "text",
            "analyzer":"my_analyzer",
            "search_analyzer": "my_analyzer"
          },
          "xhx": {
            "type": "text",
            "analyzer":"my_analyzer2",
            "search_analyzer": "my_analyzer2"
          }
        }
      }
    }
  }
}
}

修改剛才建立的type的mapping為multi-fields

PUT /test/tech/_mapping
{
  "tech": {
    "properties": {
      "body": {
        "type": "text",
        "analyzer":"standard",
        "search_analyzer": "standard",
        "fields": {
          "syh": {
            "type": "text",
            "analyzer":"my_analyzer",
            "search_analyzer": "my_analyzer"
          },
          "xhx": {
            "type": "text",
            "analyzer":"my_analyzer2",
            "search_analyzer": "my_analyzer2"
          }
        }
      }
    }
  }
}

修改剛才建立的索引的setting,本例是修改analyzer,注意修改setting必須先關閉索引,然後再開啟索引

POST  /test/_close
PUT /test/_settings
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "tokenizer": "my_tokenizer"
        },
        "my_analyzer2": {
          "type":      "pattern",
          "pattern":   "\\W+|_", 
          "lowercase": true
        }
      },
      "tokenizer": {
        "my_tokenizer": {
          "type": "pattern",
          "pattern": "\\w+|\"(.+?)\"",
          "group":0
        }
      }
    }
  }
}
POST  /test/_open

針對剛才索引test的型別tech的不同的欄位做analyzer,同樣的文件其分詞效果是不一樣的。

檢視body.syh欄位的帶雙引號分詞效果

POST /test/_analyze
{
  "field": "body.syh",
  "text": "description \"this device in beijing office \" \"what are you going to do\" email_address"
}

檢視body.xhx欄位的帶下劃線的分詞效果

POST /test/_analyze
{
  "field": "body.xhx",
  "text": "description \"this device in beijing office \" \"what are you going to do\" email_address"
}

檢視body欄位的standard的分詞效果

POST /test/_analyze
{
  "field": "body",
  "text": "description \"this device in beijing office \" \"what are you going to do\" email_address"
}

使用bulk插入一條資料

POST _bulk/?refresh=true
{ "index" : { "_index" : "test", "_type" : "tech" } }
{ "body": "description \"this device in beijing office\" \"what are you going to do\" email_address"}

查詢body欄位的standard搜尋

POST /test/_search?pretty
{
  "query": {
    "term": {
      "body": "description"
    }
  }
}

查詢body.xhx欄位的my_analyzer2搜尋

POST /test/_search?pretty
{
  "query": {
    "term": {
      "body.syh": "\"this device in beijing office\""
    }
  }
}

查詢body.xhx欄位的my_analyzer搜尋

POST /test/_search?pretty
{
  "query": {
    "term": {
      "body.xhx": "address"
    }
  }
}

相關推薦

elasticsearch建立multi-fields修改multi-fieldsmulti-fieldsmulti-field不同analyzer進行分析搜尋

本文使用的elasticsearch是5.2.1,官方的multi-fields例子參見 https://www.elastic.co/guide/en/elasticsearch/reference/5.3/multi-fields.html 建立一個index及type

Elasticsearch索引的建立、檢視修改

mapping的寫入與檢視    使用elasticsearch儲存資料之前建立索引非常關鍵,一個好的索引使後續業務的查詢更加方便快捷,我們建立索引時如果不指定相關資訊,會按照預設設定建立,如果我們想要更加強大的功能,比如中文檢索、拼音檢索、首拼檢索,就需要我們自己規劃索引

MySQL(1) 基本操作(MySQL的啟動,表的建立,查詢表的結構表的修改

MySQL啟動流程 1 啟動伺服器   2 使用者名稱登入到MySQL資料庫中    3  檢視有哪些資料庫   4 使用其中的資料庫    5 檢視該資料庫中已有哪些表,沒有就新建 mysql

SQL 操作表結構(建立,刪除修改

新增欄位: ALTER TABLE [表名] ADD [欄位名] NVARCHAR (50) NULL 刪除欄位: ALTER TABLE [表名] DROP COLUMN [欄位名] 修改欄位: ALTER TABLE [表名] ALTER COLUMN [欄位名] N

Access中欄型別修改型別的SQL語句

Access中的資料型別 Access中有10中資料型別:文字、備註、數值、日期/時間、貨幣、自動編號、是/否、OLE物件、超級連結、查詢嚮導。 1、文字(Text(n)):這種型別允許最大255個字元或數字,Access預設的大小是50個字元,而且系統只儲存輸入到欄位中的字元,而不儲存文字欄位中未用位置

mysql 在表中新加修改

新增欄位 在某個欄位之後新加一個欄位: ALTER TABEL xxx ADD column_name VARCHAR(64) NOT NULL DEFAULT '' COMMENT '' AFTER xxx; 修改欄位 ALTER TABEL xxx MODIFY co

SpringBoot學習筆記15——MybatisPlus修改時空修改

問題描述: 今天遇到了一個問題,在更新資料時,MybatisPlus不會進行修改屬性為空的資料表字段。 解決辦法: 只需要在實體類的屬性上加一行註釋即可 /** * 姓名 */ @TableField(fill = FieldFill.UPDATE

資料庫工作筆記010---Mysql中用SQL增加、刪除修改名、型別、註釋,調整順序總結

  JAVA技術交流QQ群:170933152   Mysql中用SQL增加、刪除欄位,修改欄位名、欄位型別、註釋,調整欄位順序總結   在網站重構中,通常會進行資料結構的修改,所以新增,刪除,增加mysql表的欄位是難免的,有時為了方便,還會增加

建立新資料庫修改資料庫內容

1.切換到odoo使用者 su - odoo -s /bin/bash 2. 建立新資料庫 createdb v8dev 3. 初始化資料庫,並配置odoo資料模式 chmod +x odoo: odoo.py(可選,增加檔案的執行許可權) ./odoo.py -d v8

Linux建立使用者修改使用者的許可權

下面的步驟都是在root使用者下完成 1:建立一個使用者並且制定一個主目錄 useradd -d /home/john john(建立一個使用者名稱為john的使用者,指定的主目錄是/home//john) 2:修改建立使用者的密碼 passwd john 123456(將joh

解決MybatisPlus修改時空修改問題

問題描述: 今天遇到了一個問題,在更新資料時,MybatisPlus不會進行修改屬性為空的資料表字段。 解決辦法: 只需要在實體類的屬性上加一行註釋即可 /** * 姓名 */ @TableField(fill = FieldFill.UPDATE) private String name;

flask-連線資料庫flask_aqlalchemy-建表-增加-刪除-修改

安裝模組 pip install pymysql pip install flask_aqlalchemy flaskpei配置檔案setting.py 中配置資料庫 設定資料庫url #coding=utf-8 class DataBaseSetting: DEBUG=Tr

檢視並修改Oracle使用者的密碼【oracle不能檢視dba users裡password(儲存密碼的加密過的字串

本文是資料庫版本:9.2.0.5有時候我們可能不知道一個使用者的密碼,但是又需要以這個使用者做一些操作,又不能去修改掉這個使用者的密碼,或者自己乾脆忘記密碼了,想修改自己的密碼,這個時候,就可以利用一些小竅門,來完成操作。具體操作過程如下:SQL*Plus: Release 9.2.0.5.0 - Produ

MySql資料庫在表中新增新,設定主鍵,設定外來鍵,移動位置,以及修改資料庫後如何進行部署維護的總結

1,為當前已有的表新增新的欄位 alter table student add studentName varchar(20) not null; 2,為當前已有的表中的欄位設定為主鍵自增 alter table student add constraint PK_studentId primaryKe

greendao資料庫升級新增修改版本後,所引發的問題

首先就是配置greendao資料哭的環境 1.在主專案中的build.gradle 經行配置環境 :(自己這樣用的僅供參考) apply plugin: 'org.greenrobot.greend

Mysql 資料庫 表 字符集修改

修改資料庫字符集 alter database owl default character set utf8; 修改表字符集 alter table t_app character set utf8; 修改單個欄位字符集 alter table t_app modify a

Mysql修改修改表操作

當我們需要針對mysql的表名或者欄位名需要修改的時候,這個時候就需要用到mysql的alter命令。 為了方便起見,首先我們新建一張使用者表。 create table user( `id` INT NOT NULL AUTO_INCREMENT, `

SQL語句增加修改修改型別、修改預設值

一、修改欄位預設值 alter table 表名 drop constraint 約束名字   ------說明:刪除表的欄位的原有約束 alter table 表名 add constraint 約束名字 DEFAULT 預設值 for 欄位名稱 -------說明

NSIS 註冊64控制元件修改登錄檔鍵的許可權方法

1 註冊控制元件 註冊32位控制元件:RegDLL "c:\windows\system32\x.dll" 註冊64位控制元件: 禁止檔案重定向,使用系統命令註冊控制元件,如下: ExecWait ‘“$SYSDIR\regsvr32.exe" /s "c:\windows