我正在尝试搜索数据库,并能够使用大写/小写过滤器术语,但是我注意到在query
应用分析器时,我不知道如何在过滤后的搜索中应用小写分析器。这是查询:
{
"query": {
"filtered": {
"filter": {
"bool": {
"should": [
{
"term": {
"language": "mandarin" // Returns a doc
}
},
{
"term": {
"language": "Italian" // Does NOT return a doc, but will if lowercased
}
}
]
}
}
}
}
}
我有一个languages
小写的类型:
"analyzer": {
"lower_keyword": {
"type": "custom",
"tokenizer": "keyword",
"filter": "lowercase"
}
}
以及相应的映射:
"mappings": {
"languages": {
"_id": {
"path": "languageID"
},
"properties": {
"languageID": {
"type": "integer"
},
"language": {
"type": "string",
"analyzer": "lower_keyword"
},
"native": {
"type": "string",
"analyzer": "keyword"
},
"meta": {
"type": "nested"
},
"language_suggest": {
"type": "completion"
}
}
}
}
问题是您在索引期间分析了一个字段以使其小写,但您正在对未分析的查询使用术语过滤器:
术语过滤器
筛选具有包含术语(未分析)的字段的文档。与术语查询类似,不同之处在于它充当过滤器。
http://www.elasticsearch.org/guide/zh-
CN/elasticsearch/reference/current/query-dsl-term-
filter.html
我会尝试使用查询过滤器代替:
查询过滤器
包装任何查询以用作过滤器。可以放置在接受过滤器的查询中。
例:
{
"constantScore" : {
"filter" : {
"query" : {
"query_string" : {
"query" : "this AND that OR thus"
}
}
}
} }
http://www.elasticsearch.org/guide/zh-
CN/elasticsearch/reference/current/query-dsl-query-filter.html#query-dsl-
query-
filter
我阅读了一些关于查询上下文和过滤上下文的文章和文档,了解到如果你不需要进行全文搜索或评分,最好使用过滤上下文。就我而言,我想返回包含ID的日志……所以我意识到我应该只使用过滤上下文而不是查询上下文。除了全文搜索或评分之外,是否有一条硬基线来定义何时应该使用其中一个? 所以我从我最初的DSL查询搜索cmd: 到过滤器上下文: 因为,我想使用NEST来执行我采用这种方法的查询搜索。 这是使用NEST进
问题内容: 我已经下载了包含技能分类法的onet数据集,并将其上传到了Elasticsearch中。在技能分类中,有一些技能,例如c ++ 、. net,C#。我想给c#并且只获得c#的技能。通过检查一些链接,我已如下设置索引的映射和设置。 当我使用如下查询 我正在获得所有具有“ c”的技能 当我使用以下查询时假设应用了分析器 我得到空输出。我是否正确包括了分析仪,或者我的查询错误? 问题答案
问题内容: “过滤后的查询和过滤器”与“根查询和过滤器”之间有什么区别吗?例如 情况1: 情况2: 我在http://elasticsearch-users.115913.n3.nabble.com/Filtered-query-vs-using- filter-outside-td3960119.html中 找到了此讨论,但所引用的URL是404,并且解释过于简洁我。 请示教或提供指出这些区别的
我基本上是在尝试禁用小写过滤器,以便能够对文本字段进行区分大小写的匹配。按照索引和分析器文档,我创建了以下不带小写过滤器的映射: PUT/my_索引 我启用fielddata,以便在之后检查标记化 放置我的索引/\u映射/\u文档 我测试了自定义分析器,以确保它不像预期的那样是小写的 后 /my_index/analyze 得到以下响应 太好了,事情并没有像我想的那样变小。现在我试着插入相同的文本
我从事elasticsearch,我尝试混合两个工作查询。第一个是“and filter”,第二个是“bool filter”,但我失败了。 我的查询是从用户交互界面动态生成的。 “和过滤器”: 我需要“和过滤器”来查询数据,例如,字段必须等于“非洲”或“亚洲”或为空。这是一个工作查询的示例: 此查询工作正常,结果如下: 现在我需要用字段“D\u TYPESTATUS”来限制结果数据,该字段必须与
我在ES中有一个多匹配查询,希望添加一个过滤器。 添加此筛选器的语法是什么? 我试过: