我想在查询时使用其他分析器来撰写查询。
我从文档“Controlling Analysis”中得知这是可能的:
但是我不知道如何组成查询以便为不同的子句指定不同的分析器:
"query" => [
"bool" => [
"must" => [
{
"match": ["my_field": "My query"]
"<ANALYZER>": <ANALYZER_1>
}
],
"should" => [
{
"match": ["my_field": "My query"]
"<ANALYZER>": <ANALYZER_2>
}
]
]
]
我知道我可以索引两个或更多不同的字段,但是我有很强的辅助内存约束,并且我不能索引相同的信息N次。
谢谢
最佳答案
如果还没有,则首先需要将自定义分析器映射到索引设置端点。
注意:如果索引存在并且正在运行,请确保先关闭它。POST /my_index/_close
然后将自定义分析器映射到设置端点。
PUT /my_index/_settings
{
"settings": {
"analysis": {
"analyzer": {
"custom_analyzer1": {
"type": "standard",
"stopwords_path": "stopwords/stopwords.txt"
},
"custom_analyzer2": {
"type": "standard",
"stopwords": ["stop", "words"]
}
}
}
}
}
再次打开索引。
POST /my_index/_open
现在,您可以使用新的分析器查询索引。
GET /my_index/_search
{
"query": {
"bool": {
"should": [{
"match": {
"field_1": {
"query": "Hello world",
"analyzer": "custom_analyzer1"
}
}
}],
"must": [{
"match": {
"field_2": {
"query": "Stop words can be tough",
"analyzer": "custom_analyzer2"
}
}
}]
}
}
}
关于elasticsearch - 如何在查询时使用Elasticsearch指定其他分析器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37754132/