簡體   English   中英

帶有通配符的Elasticsearch索引字段並進行搜索

[英]Elasticsearch index field with wildcard and search for it

我有一個帶有“序列號”字段的文檔。 該序列號是ABC.XXX.DEF,其中XXX表示通配符。 XXX可以是\\ d {3} [a-zA-Z0-9]。

因此用戶可以搜索:

ABC.123.DEF

ABC.234.DEF

ABC.XYZ.DEF

而文檔僅包含

ABC.XXX.DEF

當用戶查詢ABC.123.DEF時,我需要在包含ABC.XXX.DEF的文檔上單擊。 由於其他文檔可能包含ABC.DEF.XXX,並且一定不要被單擊,所以我的基本Elasticsearch知識用盡了。

在分析/標記模式時,我是否必須從查詢端解決問題?

誰能給我一個例子來解決這個問題?

只要序列號定義明確,我想到的第一個解決方案就是將序列號分為三個部分(例如,“ part1”,“ part2”和“ part3”)並將它們索引為三個單獨的字段。 由通配符組成的部分應具有特殊值,或者完全不能索引。 然后在查詢時,我將以同樣的方式拆分用戶提供的序列號。 假設沒有對由通配符組成的部分建立索引,我的查詢將如下所示:

"query": {
  "bool": {
    "must":[
      {
        "bool": {
          "should": [
            {
              "match": {
                "part1": "ABC"
              }
            },
            {
              "bool": {
                "must_not": {
                  "exists": {
                    "field": "part1"
                  }
                }
              }
            }
          ]
        }
      },
      ... // Similar code for other parts
    ] 
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM