I want to do a prefix term query against an analyzed field, and use a search analyzer (to lowercase/asciifolding).
Here some docs:
- "Pétanque"
- "concours de pétanque"
Query "petan" should give me only "Pétanque".
Any idea?
I want to do a prefix term query against an analyzed field, and use a search analyzer (to lowercase/asciifolding).
Here some docs:
Query "petan" should give me only "Pétanque".
Any idea?
Why do you specifically want to use a search analyzer? I don't think you can do this with just a search analyzer. You will need to have an analyzer at index time too. The following should work:
PUT my_index
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"type": "custom",
"tokenizer": "keyword",
"filter": [
"lowercase",
"asciifolding"
]
}
}
}
},
"mappings": {
"doc": {
"properties": {
"my_field": {
"type": "text",
"analyzer": "my_analyzer"
}
}
}
}
}
PUT my_index/doc/1
{
"my_field": "Pétanque"
}
PUT my_index/doc/2
{
"my_field": "concours de pétanque"
}
GET my_index/_search
{
"query": {
"prefix": {
"my_field": {
"value": "petan"
}
}
}
}
From https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-prefix-query.html:
"Matches documents that have fields containing terms with a specified prefix (not analyzed)."
I want to analyze what user types "PéTANque" ==> "petanque".
For now I am calling analyze API to retrieve the terms, but wondering if is it possible to do that without.
In that case, you could use a match_phrase_prefix
query. This query is analyzed.
GET my_index/_search
{
"query": {
"match_phrase_prefix": {
"my_field": {
"query": "PéTANque"
}
}
}
}
This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
© 2020. All Rights Reserved - Elasticsearch
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant logo are trademarks of the Apache Software Foundation in the United States and/or other countries.