Hello,World

es 的DSL查询问题

Elasticsearch | 作者 sunshinewan | 发布于2021年07月19日 | 阅读数:304

es版本7.12
问题:怎么对标点符号用unicode编码,后面还有英文标签的内容用query_string字段查询编写,查询使用的分词器和dsl语句怎么写。
 
例如:
需要查询的文本内容“文本内容\u003e\u003cbody html href文本内容”(文本内容是指其他文本内容)
需要用query_string字段查询包含body,html,href的所有内容
之前分词用的默认分词器,查询的内容分词成body,html,href,但是由于body前面有\u003e\u003c所以一直不成功。求大神解答
已邀请:

a2dou

赞同来自:

你这个检索需求比较怪啊,检索内容是索引内容的unicode编码。
试试在analyzer里加上charfilter的映射,会把你的输入的unicode编码转换成标点符号,这样不管是索引文本还是检索输入文本,最终索引的都是标点符号。
GET /_analyze
{
  "tokenizer": "keyword",
  "char_filter": [
    {
      "type": "mapping",
      "mappings": [
        "\u003e => <",
        "\u003c => >"
      ]
    }
  ],
  "text": "My license plate is \u003e\u003c"
}
 
response
{
  "tokens": [
    {
      "token": "My license plate is <>",
      "start_offset": 0,
      "end_offset": 22,
      "type": "word",
      "position": 0
    }
  ]
}

要回复问题请先登录注册