在所有字段中查找URL的一部分(elasticsearch)

时间:2014-05-07 12:15:56

标签: java elasticsearch

我有以下映射:

"urls": {
   "type": "string", 
   "index_name": "url", 
   "boost": "1",
   "analyzer": "aurlemail",
   "store": "yes"
 }

,分析仪定义如下:

index.analysis.analyzer.aurlemail:
  type: custom
  tokenizer: uax_url_email
  filter: lowercase, fngramurl

index.analysis.filter.fngramurl:
  type: nGram
  min_gram: 3
  max_gram: 20

我将http://www.google.comhttp://www.google.com/hugo添加到索引中,这是两个单独的文档。

当我在特定字段上执行termQuery时,我会得到预期的匹配(例如,我搜索www.google.comgoogle.com),但是当我只想要一个简单的查询时,我没有定义任何我得到零结果的字段。

代码如下所示:

client().prepareSearch("myindex").setQuery("www.google.com")
  .execute().actionGet();

如何在不必分别指定termQuery特定字段的情况下获得结果?

更新

更具体:我想在查询 google ,甚至 com 时也会收到匹配。由于定义的分析器(我想),这应该在索引中可用,但matchQuerystringQuery都不能按预期工作

更新2

有问题的ES版本是1.1.0

1 个答案:

答案 0 :(得分:1)

使用默认字段的查询字符串查询为" _all"。

client().prepareSearch("myindex").setQuery(QueryBuilders.queryString("www.google.com")
.defaultField("_all")).execute().actionGet();

<强>更新

匹配查询

 client().prepareSearch("myindex").setQuery(QueryBuilders.matchQuery("_all", "google")).execute().actionGet();

希望它有帮助..!