Partial search using analyzer in ElasticSearch

I use elasticsearch to create a URL index.

I extracted one URL into 3 parts, which are the “domain”, “track” and “request”.

For example: testing.com/index.html?user=who&pw=nowill be divided into

domain = testing.com
path = index.html
query = user=who&pw=no

There are problems when I wanted a partial domain search in my index, for example, "user = who" or "ing.com".

Is it possible to use the "Analyzer" when searching, even if I did not use the "Analyzer" when indexing?

How can I do a partial search based on the analyzer?

Many thanks.

+1
source share
2 answers

2 fit:

1. Search for wildcards - easy and slow

"query": {
    "query_string": {
        "query": "*ing.com",
        "default_field": "domain"
    }
}

2. nGram - ,

"settings" : {
    "analysis" : {
        "analyzer" : {
            "my_ngram_analyzer" : {
                "tokenizer" : "my_ngram_tokenizer"
            }
        },
        "tokenizer" : {
            "my_ngram_tokenizer" : {
                "type" : "nGram",
                "min_gram" : "1",
                "max_gram" : "50"
            }
        }
    }
}

Mapping

"properties": {
    "domain": {
        "type": "string",
        "index_analyzer": "my_ngram_analyzer"
    },
    "path": {
        "type": "string",
        "index_analyzer": "my_ngram_analyzer"
    },
    "query": {
        "type": "string",
        "index_analyzer": "my_ngram_analyzer"
    }
}

"query": {
    "match": {
        "domain": "ing.com"
    }
}
+5

"user=who&pw=no" ["user=who&pw=no", "user=who", "pw=no"] . , "user=who". pattern_capture, .

path_hierarchy, "/some/path/somewhere" ["/some/path/somewhere", "/some/path/", "/some"]. tokenizer path_hierarchy hierarcy, reverse: true delimiter: ".". -, .

-1

Source: https://habr.com/ru/post/1524905/


All Articles