如何在Elasticsearch中查询特殊字符

亚尔基

我在Elasticsearch中有一条数据是这样的:

   {"_index": "my_index",
    "_type": "my_type",
    "_id": "test_id",
    "_version": 1,
    "_score": 1,
    "_source": {
        "d2": "*",
        "d1": "test_data"
    }}

因此,我可以通过以下子句搜索此数据:

{"query": {"filtered":{"filter":{"term":{"d1":"test"}}}}}

但是,因为字段“ d2”具有特殊字符“ *”,所以我对如何通过d2搜索此数据感到困惑。下面的这两种方法都是不正确的。

{"query": {"filtered":{"filter":{"term":{"d2":"*"}}}}}

或者

{"query": {"filtered":{"filter":{"term":{"d2":"\*"}}}}}
托马斯·C

您的问题是您的索引不包含任何内容!

如果您没有设置特定的映射做的,已经使用的动态映射具有设置与类型的字段string,它是分析默认与standard分析。

如果您*使用标准分析仪检查分析结果,则会发现结果没有任何标记:

GET _analyze?analyzer=standard&text=*

ElasticSearch响应:

{
   "tokens": []
}

更改您的映射以使d2字段索引为not_analyzed,并且文档将与您的查询匹配。

例子 :

POST /special/
{
  "mappings":{
    "character":{
      "properties":{
        "d2":{
          "type":"string",
          "index":"not_analyzed"
        }
      }
    }
  }
}

POST /special/character/
{
  "d2":"*"
}

POST /special/_search
{
  "query": {
    "term": {
      "d2": "*"
    }
  }
}

最后,您得到了结果:

"hits": {
      "total": 1,
      "max_score": 0.30685282,
      "hits": [
         {
            "_index": "special",
            "_type": "character",
            "_id": "AU_gcWOBn6s1TzYZvmTv",
            "_score": 0.30685282,
            "_source": {
               "d2": "*"
            }
         }
      ]
   }

分析是ElasticSearch的一个非常重要的概念:花时间阅读它,您将节省大量时间来了解发生的事情。

若要更一般地回答如何查询这些特殊字符,您必须控制您的分析,不要删除它们或在未分析的专用字段上进行查询。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在SQL Server Select查询中处理特殊字符

来自分类Dev

如何在模糊搜索查询中处理特殊字符

来自分类Dev

Elasticsearch - 如何在json文档中搜索与特殊字符(-)完全匹配的字符串

来自分类Dev

如何在Kibana中搜索带有特殊字符的单词-Elasticsearch

来自分类Dev

如何在SQL Server中参数化具有特殊字符的查询?

来自分类Dev

如何在lucene.net中索引和搜索带有特殊字符的短语查询?

来自分类Dev

如何在Android中编写特殊字符

来自分类Java

如何在SimpleDateFormat中插入特殊字符?

来自分类Dev

如何在熊猫中编码特殊字符?

来自分类Dev

如何在XML中编码特殊字符

来自分类Dev

如何在Perl中读取特殊字符?

来自分类Dev

如何在Moc中启用特殊字符?

来自分类Dev

如何在Clojure中搜索特殊字符?

来自分类Dev

如何在xmgrace中制作特殊字符

来自分类Dev

如何在反应中阻止特殊字符?

来自分类Dev

如何在Ansible中替换特殊字符

来自分类Dev

如何在python中编码特殊字符

来自分类Dev

如何在android中显示特殊字符

来自分类Dev

如何在Outlook中搜索特殊字符?

来自分类Dev

如何在HTML中显示特殊字符

来自分类Dev

如何在Android中替换特殊字符?

来自分类Dev

如何在python中打印特殊字符

来自分类Dev

如何在 ElasticSearch 中使用特殊字符标记和搜索

来自分类Dev

如何在 ldap 查询中转义特殊字符?

来自分类Dev

Elasticsearch词查询不匹配特殊字符

来自分类Dev

如何在Grafana中查询Elasticsearch

来自分类Dev

如何在Elasticsearch中限制查询时间?

来自分类Dev

如何在ElasticSearch中查询fieldA = fieldB?

来自分类Dev

如何在 ElasticSearch 中组合多个查询

Related 相关文章

热门标签

归档