雖然有記錄,但沒有工作示例說明如何使用索引時間和不同的查詢時間分析器創建索引。使用不同的查詢和索引時間分析器創建elasticsearch索引
我希望在搜索上應用同義詞過濾器。如果我指定分析儀名稱,但可以測試分析儀,但沒有名稱,它不會檢測到默認值。
什麼可能是錯的?
"settings": {
"index": {
"analysis": {
"filter": {
"synonym": {
"type": "synonym",
"synonyms": [
"testword => otherword"
]
}
},
"analyzer": {
"default_search": {
"filter": [
"lowercase",
"asciifolding",
"synonym"
],
"tokenizer": "standard"
},
"default_index": {
"filter": [
"lowercase",
"asciifolding"
],
"tokenizer": "standard"
}
}
}
注意兩個不同的分析儀,名爲default_search
和default_index
。根據文檔,這些應該被視爲默認值。所以如果我執行'testword'的搜索,它會搜索'otherword'。
我可以確認默認分析器的名稱被設置在索引類型:
"myIndex": {
"mappings": {
"myType": {
"index_analyzer": "default_index",
"search_analyzer": "default_search",
"properties": ...
我執行測試搜索:
而不指定分析器/myIndex/_analyze/?pretty=true&text=testword
呼叫(它期待拾取default_search
作爲配置)
{
"tokens" : [ {
"token" : "testword",
"start_offset" : 0,
"end_offset" : 9,
"type" : "<ALPHANUM>",
"position" : 1
} ]
}
使用特定分析器撥打myIndex/_analyze/?analyzer=default_search&pretty=true&text=testword
{
"tokens" : [ {
"token" : "otherword",
"start_offset" : 0,
"end_offset" : 9,
"type" : "SYNONYM",
"position" : 1
} ]
}
一個示例搜索,該索引包含一個字段值爲'otherword'的項目。下面的查詢不會返回任何結果,搜索'otherword'會返回所需的項目。 POST myIndex/_search
"query": {
"multi_match": {
"query": "testword",
"analyzer": "default_search",
"fields": [
"name"
]
}
}
請注意,用於索引的默認分析器應該被命名爲'default',而不是'default_index'(參見[here])。(https://www.elastic.co/guide/en/elasticsearch/reference/2.2 /analysis-analyzers.html#default-analyzers)。你也可以解釋你如何運行你的測試搜索? – Val
@Val查看已更新的問題,顯示查詢 – simbolo
您正在使用哪個版本的ES? – ChintanShah25