1. 程式人生 > >elasticsearch 欄位別名(建立索引並指定索引型別的mapping)

elasticsearch 欄位別名(建立索引並指定索引型別的mapping)

ES預設是動態建立索引和索引型別的mapping的。這就相當於無需定義Solr中的Schema,無需指定各個欄位的索引規則就可以索引檔案,很方便。但有時方便就代表著不靈活。比如,ES預設一個欄位是要做分詞的,但我們有時要搜尋匹配整個欄位卻不行。如有統計工作要記錄每個城市出現的次數。對於NAME欄位,若記錄“new york”文字,ES可能會把它拆分成“new”和“york”這兩個詞,分別計算這個兩個單詞的次數,而不是我們期望的“new york”。

這時,就需要我們在建立索引時定義mapping。假設索引叫index_name,索引型別的名字叫index_type,編寫mapping檔案如下(注意:mapping檔案中,index_type必須與實際索引當中的索引型別完全一致。

):

{	
	   "index_type":{  
		  "properties":{  
			 "ID":{  
				"type":"string",  
				"index":"not_analyzed"   
			 },  			 
			 "NAME":{
				"type":"string",
				"fields":{
					"NAME":{
						"type":"string"
					},
					"raw":{
						"type":"string",
						"index":"not_analyzed"	
					}
				}					
			 } 		 	 		
		  }  
	   }   
}

以上檔案是說我們對於index_type這個索引型別,定義了它的mapping。重點是將NAME這個欄位對映為兩個,一個是需要做索引分析的NAME,另一個是不分析的raw,即不會拆分new york這種片語。這樣我們在做搜尋的時候,就可以對NAME.raw這個欄位做term aggregation,獲得所有城市出現的次數了。term aggregation的REST方式的請求編寫如下:

{
  "query": {
    "match_all": {}
  },
  "aggregations": {
    "cityAggs": {
      "terms": {
        "field"
"NAME.raw"       }     }   } }

相關推薦

elasticsearch 別名建立索引指定索引型別的mapping

ES預設是動態建立索引和索引型別的mapping的。這就相當於無需定義Solr中的Schema,無需指定各個欄位的索引規則就可以索引檔案,很方便。但有時方便就代表著不靈活。比如,ES預設一個欄位是要做分詞的,但我們有時要搜尋匹配整個欄位卻不行。如有統計工作要記錄每個城市出現

如何修改帶索引的長度,檢視、刪除索引,修改屬性、建立索引

需要重新建立索引,因為長度不同會認為是兩個不同的所索引。 建立和刪除索引 索引的建立可以在CREATE TABLE語句中進行,也可以單獨用CREATE INDEX或ALTER TABLE來給表增加索引。刪除索引可以利用ALTER TABLE或DROP INDEX語句來實現。 (1)使用ALTER T

oracle資料庫計算兩個時間型別值的時間差,轉換為合適的時間格式顯示按時分秒展示

1.背景    資料庫表名為tablename。其中兩個欄位為startdate(開始時間),closedate(結束時間)。 2.需求    建立試圖,查詢出間隔時間並顯示為自定義的格式。 3.sql語句  select t.*,

關於springboot升級到springboot2.0的一些問題總結包括ElasticSearch、Redis、Gradle、ElasticSearch摺疊查詢

關於springboot升級到springboot2.0的一些問題總結(包括ElasticSearch、Redis、Gradle) 最近做專案遇到了一個很麻煩的需求,欄位摺疊,使用mysql查詢的話,簡化一下sql語句是這樣的,我在專案中的查詢涉及兩張表並且有

Solr 6.0 學習建立core插入索引

修改各種配置檔案。 1、修改solrhome下的solr.xml檔案 註解掉zookeeper搭建叢集配置,我們後面會採用master-slave的形式。 至於zookeeper的形式可以閱讀以下這篇文章【solrCloud叢集配置指導】:http://www.abou

多表關聯查詢中,關聯都應該建立索引嗎?

# 前言 ​ 關於mysql的學習,之前都是在網上看各種視訊學習的,所以有些知識點半信半疑。後來看了《高效能Mysql第三版》這本書,雖然只能消化一部分知識點,但有些疑點是可以解決的。 ​ __多表關聯查詢中,關聯欄位都應該建立索引嗎?__ 答案:不應該。 # 過程分析 ## Mysql是如何進

select 時 對判斷是否為null 進行賦值操作

今天用到這個需求,我用的是db2資料庫  ,上來就用ISNULL(欄位,賦值) ,結果不行。。。。。 經過查閱資料才發現每個資料庫還不同的,,下面總結一下: 首先使用mysql: ifnull(欄位,賦值); db2: nullif(欄位,賦值); oracl:

pymysql獲取要查詢的列名

使用pymysql連線資料庫進行查詢時,獲取的只是查詢的結果,並不包含列名。 可以使用cursor.description來獲取列名的相關資訊。執行結果如下所示。 #!/usr/bin/env/python # -*- coding:utf-8 -*- import pymysql

ORACLE——在所有表、中查詢某個字串輸出表名和

什麼都不想說,直接上乾貨 declare v_Sql varchar2(2000); v_count number; begin for xx in (select t.OWNER, t.TABLE_NAME, t.COLUMN_NAME from

解析ArcGis的計算器——有玄機的要素Geometry屬性,在屬性表就能查出孔洞、多部件

ArcGis裡多部件要素一般有兩種,一種是孔洞、一種是Merge在一起的兩個面。有時候為了便於賦屬性或者其他的一些原因,我們在操作中會故意Merge一些本不在一起的面,造成上述的第二種情況。藉助欄位計算器可以在屬性表中直接把它們標識出來,信不?注:以下語句需要使用Python解析。先上!shape.isMul

excel oracle命名大寫下劃線分詞轉 駝峰命名

  (帕斯卡) =LEFT(C251,1)&MID(SUBSTITUTE(PROPER(C251),"_",""),2,100) (駝峰) =LOWER(LEFT(A:A,1))&MID(SUBSTITUTE(PROPER(A:A),"_",""),2,10

解析ArcGis的計算器——文字型計算,編號那些事兒

實際操作中我們一般會將編號欄位定義為文字型,因為編號不是序號,序號是一個遞增數值,而編號往往是一個數字串程式碼。1、怎麼編號?最簡單的編號—>直接在編號欄位使用欄位計算器將FID欄位值+1計算過來便是。 BH=[FID]+1 這應該只能叫做序號值,還不夠,還有一個問題需要我們去解決,因為編

SAP 通過事務程式碼與螢幕變式SHD0控制控制使用者介面的某些,以控制生產訂單的排程型別為例

在實際工作中經常會遇到要求把SAP中某些欄位鎖定,或設為必須輸入,這時可以用事務程式碼與螢幕變式進行控制,事務程式碼:SHD0 (Transaction and Screen Variants)。 下面是控制生產訂單排程型別為固定值的操作實錄: 一、檢視生產訂單排程型別的螢幕號 輸入事務

將list集合中按照某個排序從大到小),然後將list中的物件倒序

需求: 查詢資料庫的到多條據,將每一行資料相加求和,得到sum,在jsp中跟據sum總和排序。 首先,我是用Page<Analysis> page  去接受返回值,在controller層進行資料處理。List<Analysis> list  =

MySQL中使用表別名別名

MySQL 表別名(Alias) SQL 表別名 在 SQL 語句中,可以為表名稱及欄位(列)名稱指定別名(Alias),別名是 SQL 標準語法,幾乎所有的資料庫系統都支援。通過關鍵字 AS 來指定。 表別名語法: SELECT column FROM tab

Mongodb 建立索引利用索引進行排序

python課上需要實現對經度和緯度進行排序,並篩選資料。 由於給出的資料很大,有1200W吧,而mongodb只能支援32MB的排序。。。 上網上搜了一下,決定建立索引,建立完索引之後就直接對資料進行排序了。 這裡貼一下實驗的資料型別: 這裡用的pyhton連線mongdb建

EF多求和分組/不分組

分組多欄位求和 query.GroupBy(q => new { q.Year, q.Month }) .Select(q => new { Year = q.Key.Year, Month = q.Key.Month, Bu

C#Winform+AE開發 空間連線SpatialJoin以及對映FieldMapping(新手記錄)

1,佈局 連線要素的欄位對映控制元件使用的是列表框ListBox 2,獲取目標要素和連線要素 使用兩種方式,一是自動獲取當前地圖載入的圖層             #region 獲取主視窗圖層並新增到控制元件中 &n

將模板word中的特定替換將資料匯入word中

一、 將模板word中的特定欄位替換(將資料匯入word中) 所用jar包 一、 將模板word中的特定欄位替換(將資料匯入word中) 所用jar包 開發程式碼 /** * @Title createContract * @description 生成合

EasyUI例項-排序以及EasyUI框架的datagrid-bug

可以看到我的例項-增刪改查中並沒有欄位排序,現在我們嘗試著增加一下:對學號欄位排序 第一次嘗試: 1、datagrid是用html標籤初始化的: 2、在js中用onSortColumn事件來完成欄位排序: 3、Service層(假設easyui會傳遞分頁資訊到後