[英]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.