首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果值包含在ELK字符串中,则返回结果。

如果值包含在ELK字符串中,则返回结果。
EN

Stack Overflow用户
提问于 2021-02-22 17:54:29
回答 1查看 107关注 0票数 0

我试图搜索包含elk上的值的文档,该值是由{##**}符号分隔的。例如,在ELK文档中存在一个键:value -> elk_value : 'AGA>23/180@20210212-1|AGA>23/180@20210212-2|AGA>23/180@20210212-3'如何搜索所有包含AGA>23/180@20210212-1的文档以获取字段elk_value

我试过这样的术语:

代码语言:javascript
复制
{
  "query": {
    "term": {
      "elk_value.keyword": "AGA>23/180@20210212-1"
    }
  }
}

但是找到了0条记录。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-22 23:58:03

您需要使用一个| ,当遇到模式标记器时,它会将文本拆分为令牌。

添加一个工作示例

索引映射:

代码语言:javascript
复制
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "tokenizer": "my_tokenizer"
        }
      },
      "tokenizer": {
        "my_tokenizer": {
          "type": "pattern",
          "pattern": "\\|| "
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "elk_value": {
        "type": "text",
        "analyzer": "my_analyzer"
      }
    }
  }
}

分析API:

代码语言:javascript
复制
GET /_analyze

{
  "analyzer" : "my_analyzer",
  "text" : "'AGA>23/180@20210212-1|AGA>23/180@20210212-2|AGA>23/180@20210212-3"
}

将生成以下令牌

代码语言:javascript
复制
{
  "tokens": [
    {
      "token": "'AGA>23/180@20210212-1",
      "start_offset": 0,
      "end_offset": 22,
      "type": "word",
      "position": 0
    },
    {
      "token": "AGA>23/180@20210212-2",
      "start_offset": 23,
      "end_offset": 44,
      "type": "word",
      "position": 1
    },
    {
      "token": "AGA>23/180@20210212-3",
      "start_offset": 45,
      "end_offset": 66,
      "type": "word",
      "position": 2
    }
  ]
}

索引数据:

代码语言:javascript
复制
{
  "elk_value": "AGA>23/180@20210212-6|AGA>23/180@20210212-4|AGA>23/180@20210212-5"
}
{
  "elk_value": "AGA>23/180@20210212-1|AGA>23/180@20210212-4|AGA>23/180@20210212-5"
}
{
  "elk_value": "AGA>23/180@20210212-1|AGA>23/180@20210212-2|AGA>23/180@20210212-3"
}

搜索查询:

代码语言:javascript
复制
{
  "query": {
    "match": {
      "elk_value": "AGA>23/180@20210212-1"
    }
  }
}

搜索结果:

代码语言:javascript
复制
"hits": [
      {
        "_index": "66320921",
        "_type": "_doc",
        "_id": "1",
        "_score": 0.4700036,
        "_source": {
          "elk_value": "AGA>23/180@20210212-1|AGA>23/180@20210212-2|AGA>23/180@20210212-3"
        }
      },
      {
        "_index": "66320921",
        "_type": "_doc",
        "_id": "2",
        "_score": 0.4700036,
        "_source": {
          "elk_value": "AGA>23/180@20210212-1|AGA>23/180@20210212-4|AGA>23/180@20210212-5"
        }
      }
    ]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66320921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档