gpt4 book ai didi

elasticsearch - Elasticsearch:筛选文档字段值中的子字符串?

转载 作者:行者123 更新时间:2023-12-03 01:07:46 25 4
gpt4 key购买 nike

我是Elasticsearch的新手。我对字符串字段具有以下映射:

"ipAddress": {
"type": "string",
"store": "no",
"index": "not_analyzed",
"omit_norms": "true",
"include_in_all": false
}

ipAddress字段中具有值的文档如下所示:
"ipAddress": "123.3.4.12 134.4.5.6"

请注意,以上有两个IP地址,中间用空格分隔。

现在,我需要根据此字段过滤文档。这是一个示例过滤器值
123.3.4.12

过滤器值始终是单个IP​​地址,如上所示。

我在看过滤器

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-filters.html

而且我似乎无法为此找到合适的过滤器。我尝试了过滤器一词,
{
"query": {
"filtered" : {
"query" : {
"match_all" : {}
},
"filter": {
"term" : { "ipAddress" : "123.3.4.12" }
}
}
}
}

但是似乎只有在过滤器值100%与文档字段的值匹配时,它才返回文档。

有人可以帮我吗?

更新:

根据John Petrone的建议,我通过定义基于空白标记器的分析器来使其工作,如下所示:
{
"settings": {
"index": {
"analysis": {
"analyzer": {
"blank_sep_analyzer": {
"tokenizer": "whitespace"
}
}
}
}
},
"mappings": {
"ipAddress": {
"type": "string",
"store": "no",
"index": "analyzed",
"analyzer": "blank_sep_analyzer",
"omit_norms": "true",
"include_in_all": false
}
}
}

最佳答案

问题是没有对该字段进行分析,因此如果其中有2个IP地址,则该术语实际上是完整字段,例如“123.3.4.12 134.4.5.6”。

我建议采用另一种方法-如果您总是要用空格分隔IP地址列表,请考虑使用空白标记生成器将标记创建为空白-应该创建几个与IP地址匹配的标记:

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/analysis-whitespace-tokenizer.html

关于elasticsearch - Elasticsearch:筛选文档字段值中的子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24856607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com