在ElasticSearch的每个字段上添加简单搜索

时间:2019-12-10 07:19:59

标签: elasticsearch

这是我的查询

"query":{ 
  "query":{ 
     "bool":{ 
        "must":[ 
           { 
              "term":{ 
                 "device_id":"1"
              }
           },
           { 
              "range":{ 
                 "created_at":{ 
                    "gte":"2019-10-01",
                    "lte":"2019-12-10"
                 }
              }
           }
        ],
        "must_not":[ 
           { 
              "term":{ 
                 "action":"ping"
              }
           },
           { 
              "term":{ 
                 "action":"checkstatus"
              }
           }
        ]
     }
  },
  "sort":{ 
     "created_at":"desc"
  },
  "size":10,
  "from":0
}

在完全不同的字段集之间,日志差异很大。如果其中任何一个是我要查找的字符串,我可以怎么做?假设我正在寻找“ mit”,它显示了一个带有

的日志
  

姓->史密斯

第二个是

  

操作->“消息已提交”

我尝试使用match ['_all'=>“ mit”],但是我听说过时了。

我正在使用Elasticsearch 7.3.1

1 个答案:

答案 0 :(得分:0)

要在所有字段中执行搜索,请使用copy_to将所有字​​段的值复制到分组的字段中,然后对该字段执行查询。如果您有动态索引映射,请参考this

要支持infix匹配,可以使用ngrams。 This是ngram的很好的教程。

也可以使用wildcard查询来执行中缀匹配。但是出于性能原因,不建议使用。