2016-10-05 49 views
2

我有我想要使用正則表達式過濾來自索引的數據的場景。'='符號在正則表達式elasticsearch過濾器中不起作用

數據將以特定字段中的句子形式存在。數據還可能包含一些特殊字符和'='。

下面是該指數的詳細信息:

PUT/eventsdata { 
"mappings": { 
    "EventDataType": { 
     "properties": { 

      "id": { 
       "type": "string", 
       "index": "not_analyzed" 
      }, 
      "name": { 
       "type": "string", 
       "analyzer": "std_with_spaces" 
      }, 
      "description": { 
       "type": "string", 
       "analyzer": "std_with_spaces" 
      } 
     } 
    } 
}, 
"settings": { 
    "number_of_shards": 1, 
    "analysis": { 
     "analyzer": { 
      "std_with_spaces": { 
       "type": "keyword" 
      } 
     } 
    } 
} 

}

下面是我的索引提供的樣本數據:

id - 12 
name - Java Application 
description- Process (AppName=MyApplication) is not running in the system. 

下面是我的查詢而我試圖運行

GET /eventsdata/EventDataType/_search 
{ 
    "query": { 
     "filtered": { 
      "query": { 
         "regexp": { 
          "description": { 
           "value": ".*AppName=MyApplication.*" 
          } 
         } 

        } 

     } 
    } 
} 

但這不是給予任何result.Below在參考輸出

{ 
    "took": 19, 
    "timed_out": false, 
    "_shards": { 
     "total": 1, 
     "successful": 1, 
     "failed": 0 
    }, 
    "hits": { 
     "total": 0, 
     "max_score": null, 
     "hits": [] 
    } 
} 

如果刪除了「=」符號,並與正常字(MyApplication的)過濾器是給結果。

請幫忙。

+0

我很好奇,你可以運行'GET/eventsdata'並與結果你更新你的問題? – Val

+0

用輸出更新了問題。 – kumarc

回答

1

你對這個指數有什麼映射?

如果分析字段描述,則AppName = MyApplication被分成標記。 如果您將描述視爲未分析,則此查詢將起作用。或者,您可以將該字段(多字段)的副本也作爲未分析索引。然後搜索它。

您可以可以瞭解如何使萬事這裏:https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html

+0

謝謝@Andrzej。它正在工作。 – kumarc