- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我们得到了一个 elasticsearch 实例,但是一个工作需要“组合搜索”(一个搜索字段,带有针对特定索引的 types
的复选框)
这很好,我只是将这种搜索应用于我的索引(为简洁起见:/posts):
{
"query": {
"multi_match": {
"query": querystring,
"type":"cross_fields",
"fields":["title","name"]
}
}
}
}
您可能会从这里对 multi_match 的需求中猜到,这些类型中的每一种的模式在某种程度上是不同的。这就是我现在的挑战。
在其中一种类型中,只有一种,有一个字段在其他类型中不存在,它被称为active
,它是一个基本的 bool 值 0 或 1。
我们希望为管理搜索目的索引类型中的非事件项目,但我们不希望在搜索时向公众公开此类型中的非事件项目。
据我所知和理解,我想使用过滤器。但是,当我提供一个要求 active
为 1 的过滤器时,我现在只能从该类型获得结果,而没有其他任何结果。因为现在它正在明确寻找具有该字段且等于 1 的项目。
如何做一个条件“如果字段存在,确保它等于 1,否则忽略这个条件”?这甚至可以实现吗?
最佳答案
if field exists, make sure it equals 1, otherwise ignore this condition
我觉得可以这样实现:
{
"query": {
"filtered": {
"filter": {
"bool": {
"should": [
{
"bool": {
"must": [
{
"exists": {
"field": "active"
}
},
{
"term": {
"active": 1
}
}
]
}
},
{
"missing": {
"field": "active"
}
}
]
}
}
}
}
}
和完整的查询:
{
"query": {
"filtered": {
"query": {
"multi_match": {
"query": "whatever",
"type": "cross_fields",
"fields": [
"title",
"name"
]
}
},
"filter": {
"bool": {
"should": [
{
"bool": {
"must": [
{
"exists": {
"field": "active"
}
},
{
"term": {
"active": 1
}
}
]
}
},
{
"missing": {
"field": "active"
}
}
]
}
}
}
}
}
关于ElasticSearch multi_match 如果字段存在则应用过滤器否则不用担心?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33404357/
我有一个小问题,我开始使用Elasticsearch,并在使用curl脚本测试时遇到了这个问题。 curl -XGET 'localhost:9200/fcomputer/products/_sear
我试图重建我的 flex 搜索查询,因为我发现没有收到要查找的所有文档。 因此,假设我有这样的文档: { "id": 1234, "mail_id": 5, "sender": "john
我的记录可以对单个文本字段进行多种翻译,例如: { "type": "movie", "title": { "en": "Dark Knight", "de": "Der du
谁能告诉我这两者的区别 "query": { "bool": { "should": [ { "match": {"title": keyword} }
所以我们得到了一个 elasticsearch 实例,但是一个工作需要“组合搜索”(一个搜索字段,带有针对特定索引的 types 的复选框) 这很好,我只是将这种搜索应用于我的索引(为简洁起见:/po
我有一个具有名称和姓氏属性的用户对象。我想使用一个查询来搜索这些字段,并且在文档中找到了 multi_match,但我不知道如何将其与通配符一起正确使用。是否可以? 我尝试使用 multi_match
我有以下功能可以在 elasticsearch 中搜索结果。 我想用 PHP 和 Guzzle 执行以下请求。 /** * {@inheritdoc} */ public func
我在向嵌入在function_score内的现有多重匹配查询中添加过滤器时遇到问题。 理想情况下,我想按"term" : { "lang" : "en" }进行过滤,只获取英语版本的文档。 我尝试移动
我在 Elasticsearch 中使用以下 multi_match 查询,我想知道我是否可以仅对“friendly_name 字段”使用模糊性。我尝试过不同的东西,但似乎没有用。我还想知道是否有可能
我在简单的匹配查询中使用了 ES 的高亮显示: GET /_search { "query": { "match": { "Text": "key words he
如何为 multi_match 查询添加模糊性?因此,如果有人要搜索“basball”,它仍然会找到“baseball”文章。目前我的查询是这样的: POST /newspaper/articles/
在ElasticSearch 7.x中,我使用具有synonym filter的分析器为数据字段建立了索引。 但是,为了支持增强与数据字段中与同义词匹配的查询词“完全”匹配数据字段中的查询词的查询,我
我想使用ElasticSearch搜索我的产品集合。 如果我有这样的对象: { name: "Product Name", producer: "Best Producer"} 我想通过搜索找到该对象
我正在尝试在 ElasticSearch 中编写一个查询,在其中我将 multi_match 与过滤器结合起来用于 id 或数字 og id。 这是我目前所拥有的: { "query": {
我有一个包含条目的数据库 title: This is my awesome title abstract: A more detailed descriptions of what [...] 我想
我尝试学习 Elasticsearch 以将其添加到我的 Rails 应用程序中。我想对 2 个字段执行 multi_match 查询(就好像它们只是一个字段一样),并且还有一个必须等于 1 的另
我在 Elasticsearch 中使用 multi_match 查询: { "query": { "multi_match": { "query": "luk",
我有一个类型为 cross_fields 的 multi_match 查询,我想通过前缀匹配对其进行改进。 { "index": "companies", "size": 25, "fro
运行此查询时: { "query_string" : { "query" : "text", "fields": ["field1", "field2"] } } - {
示例查询: { "from": 0, "query": { "filtered": { "query": { "
我是一名优秀的程序员,十分优秀!