如同磁铁吸引四周的铁粉,热情也能吸引周围的人,改变周围的情况。

elasticsearch 中关于设置为Text类型字段的精确查询问题

Elasticsearch | 作者 cronous | 发布于2018年10月30日 | 阅读数:18054

Text类型字段的精确查询问题
问题:该字段假设已经索引写入输入 "ABC","AB" 两条记录,在输入查询条件 “AB” 时 如何精确查询出 “AB”的信息 而不包含“ABC” 类似 keyword 中的term查询
已邀请:

zz_hello

赞同来自: xiaoke cronous LovelyFeng

自己在mapping里面设置fields,搜索的时候用这个属性。
"properties": {
"title":{
"type": "text",
"fields": {
"key":{
"type":"keyword"
}
}
}
}

GET /test1030/zz/_search
{
"query": {
"term": {
"title.key": {
"value": "ABC"
}
}
}
}
第二种方法应该是分词器的设置。如果这边是中文的话,你可以看看。term查询就是精确匹配的


PUT /test1030/
{
  "mappings": {
    "zz": {
      "properties": {
        "title": {
          "type": "text",
          "analyzer": "ik_smart"
        }
      }
    }
  }
}
PUT /test1030/zz/1
{
  "title":"西瓜"
}
PUT /test1030/zz/2
{
  "title":"西瓜汁"
}
GET /test1030/_mapping/zz
GET /test1030/zz/_search
{
  "query": {
    "term": {
      "title": {
        "value": "西瓜汁"
      }
    }
  }
}

yyc1409130272

赞同来自:

大佬,“fields 设置text的keyword ”是什么意思呀?我现在用filebeat采集日志到ES,是插件自动的,但是默认text分词,导致日志查不准,keyword的话,又有长度限制,单条超过1024的长度好像就查不到了..

要回复问题请先登录注册