【问题标题】:Elastic search term filter is not working弹性搜索词过滤器不起作用
【发布时间】:2015-07-15 11:15:52
【问题描述】:

这是我用于获取 id

的弹性搜索查询
curl -XGET localhost:9200/test-index2/business/_search -d'
 {
     "query" : {
         "filtered" : { 
             "query" : {
                 "match_all" : {} 
             },
             "filter" : {
                 "term" : { 
                     "_id" : "AU6LqK0WCSY7HKQGengx"
                 }
             }
         }
     }
 }'

这是响应的一部分

{"contactNumber": "+1-415-392-3702", "name": "Golden Gate Hotel"}

我有 contactNumbername

现在我的第二个查询 -> 我正在使用术语过滤器查询上述联系电话

curl -XGET localhost:9200/test-index2/business/_search -d'
 {
     "query" : {
         "filtered" : { 
             "query" : {
                 "match_all" : {} 
             },
             "filter" : {
                 "term" : { 
                     "contactNumber" : "+1-415-392-3702"
                 }
             }
         }
     }
 }'

我有 0 次点击!

我已经索引了contactNumber 和name 字段。

我做错了什么??

我应该得到完全相同的记录

编辑:
附上联系电话的映射

{"test-index2":{"mappings":{"business":{"properties":{"address":{"type":"string"},"contactNumber":{"type":"string","store":true},"name":{"type":"string"}}}}}}

【问题讨论】:

  • contactNumber 的映射是什么?
  • @AndreiStefan 编辑添加联系人号码的映射
  • contactNumber 应该有一个不会改变其内容的analyzer,例如keyword 或者应该是not_analyzed

标签: json elasticsearch


【解决方案1】:

term 过滤器不分析输入文本,这意味着如果您搜索“+1-415-392-3702”,那么这就是它期望在索引中找到的确切文本。

但是,您的字段只是默认的string,这意味着它很可能使用standard 分析器来分析它。这意味着在索引中您将拥有以下标记:"1","3702","392","415",而不是单个 +1-415-392-3702

因此,您需要以下两者之一:

    "contactNumber": {
      "type": "string",
      "index": "not_analyzed",
      "store":true
    }

    "contactNumber": {
      "type": "string",
      "analyzer": "keyword",
      "store":true
    }

【讨论】:

  • 您好,Andrei,您对弹性搜索的前端有什么建议吗?我希望经常创建/更新映射和索引,每次都通过 REST 客户端完成此操作非常耗时
  • 不完全。用于测试 - Marvel 的 Sense 仪表板,或使用其中一个客户端(Java、Python 等),但后者涉及一些代码编写。
猜你喜欢
  • 2019-12-17
  • 1970-01-01
  • 1970-01-01
  • 2020-07-25
  • 1970-01-01
  • 2020-08-17
  • 1970-01-01
  • 1970-01-01
  • 2015-03-10
相关资源
最近更新 更多