如何在弹性搜索的前缀匹配

编程入门 行业动态 更新时间:2024-10-17 13:35:36
本文介绍了如何在弹性搜索的前缀匹配的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

让我们说,在我的弹性搜索索引中,我有一个名为dots的字段,它将包含一串标点符号分隔的单词(例如first.second.third)。

let's say that in my elasticsearch index I have a field called "dots" which will contain a string of punctuation separated words (e.g. "first.second.third").

我需要搜索例如first.second,然后获取所有条目,其点字段包含一个正好为first.second的字符串,或以first.second开头。

I need to search for e.g. "first.second" and then get all entries whose "dots" field contains a string being exactly "first.second" or starting with "first.second.".

我有一个问题,了解文本查询的工作原理,至少我无法创建一个查询作业。

I have a problem understanding how the text querying works, at least I have not been able to create a query which does the job.

推荐答案

p> Elasticsearch有路径层次令牌化器,这是正是为这种用例创建的。以下是如何为您的索引设置示例:

Elasticsearch has Path Hierarchy Tokenizer that was created exactly for such use case. Here is an example of how to set it for your index:

# Create a new index with custom path_hierarchy analyzer # See www.elasticsearch/guide/reference/index-modules/analysis/pathhierarchy-tokenizer.html curl -XPUT "localhost:9200/prefix-test" -d '{ "settings": { "analysis": { "analyzer": { "prefix-test-analyzer": { "type": "custom", "tokenizer": "prefix-test-tokenizer" } }, "tokenizer": { "prefix-test-tokenizer": { "type": "path_hierarchy", "delimiter": "." } } } }, "mappings": { "doc": { "properties": { "dots": { "type": "string", "analyzer": "prefix-test-analyzer", //"index_analyzer": "prefix-test-analyzer", //deprecated "search_analyzer": "keyword" } } } } }' echo # Put some test data curl -XPUT "localhost:9200/prefix-test/doc/1" -d '{"dots": "first.second.third"}' curl -XPUT "localhost:9200/prefix-test/doc/2" -d '{"dots": "first.second.foo-bar"}' curl -XPUT "localhost:9200/prefix-test/doc/3" -d '{"dots": "first.baz.something"}' curl -XPOST "localhost:9200/prefix-test/_refresh" echo # Test searches. curl -XPOST "localhost:9200/prefix-test/doc/_search?pretty=true" -d '{ "query": { "term": { "dots": "first" } } }' echo curl -XPOST "localhost:9200/prefix-test/doc/_search?pretty=true" -d '{ "query": { "term": { "dots": "first.second" } } }' echo curl -XPOST "localhost:9200/prefix-test/doc/_search?pretty=true" -d '{ "query": { "term": { "dots": "first.second.foo-bar" } } }' echo curl -XPOST "localhost:9200/prefix-test/doc/_search?pretty=true&q=dots:first.second" echo

更多推荐

如何在弹性搜索的前缀匹配

本文发布于:2023-10-26 18:35:37,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1531008.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:前缀   弹性   如何在

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!