当前位置: 首页 > 知识库问答 >
问题:

弹性搜索项过滤器不起作用

阎枫涟
2023-03-14
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"}

我有联系人号码和名字

现在我的第二个查询->我正在使用术语筛选器查询上面的联系电话

curl -XGET localhost:9200/test-index2/business/_search -d'
 {
     "query" : {
         "filtered" : { 
             "query" : {
                 "match_all" : {} 
             },
             "filter" : {
                 "term" : { 
                     "contactNumber" : "+1-415-392-3702"
                 }
             }
         }
     }
 }'
{"test-index2":{"mappings":{"business":{"properties":{"address":{"type":"string"},"contactNumber":{"type":"string","store":true},"name":{"type":"string"}}}}}}

共有1个答案

易自珍
2023-03-14

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

但是,您的字段只是默认的字符串,这意味着它很可能使用标准分析器来分析它。这意味着在索引中有以下标记:“1”、“3702”、“392”、“415”,而不是一个+1-415-392-3702

所以,你需要这两个中的任何一个:

    "contactNumber": {
      "type": "string",
      "index": "not_analyzed",
      "store":true
    }
    "contactNumber": {
      "type": "string",
      "analyzer": "keyword",
      "store":true
    }
 类似资料:
  • 我对Elasticsearch相当陌生,所以这是我的问题。我想用elasticsearch做一个搜索查询,想用多个术语过滤。 如果我想搜索用户'Tom',那么我希望获得用户'is active=1'、'is private=0'和'is owner=1'的所有匹配项。 这是我的搜索查询 谢谢你的帮助!!

  • 我试图使用过滤器聚合来支持前端的多选择方面值。 我有颜色和深度滤镜。 滤色器保存值:黑色(5)、蓝色(3)、红色(2) 深度过滤器保持值:70mm(3)、60mm(5)、50mm(3) 当我在滤色器中选择黑色时,所有其他选项(蓝色,红色)都没有响应。 我尝试添加 谢了,Sree。

  • 我试图过滤查询使用范围按日期,但它不工作。如果我使用gt, gte, lt, lte它返回零结果。如果我只使用gt或lt,它返回一些结果,但过滤器不工作。 我检查了uri上的数据类型http://mydomain.local:9200/logstash-2014.09.09/_mapping?pretty=true字段类型是正确的: 以下是我在ElasticSearch中索引的结果示例: 下面是我

  • 我正在尝试在Elastic 2中创建一个过滤索引别名。十、 以下是所有青少年的资料,不分性别。我只想在这个过滤器里看到雌性。 这就是我试图创建索引别名的原因: 我看了这个问题,似乎是相同的答案,但是我的JSON一定有问题。 Elasticsearch将范围和术语连接到相同的数组项