标签: elasticsearch-dsl

Elasticsearch查询返回所有记录

我在Elasticsearch中有一个小型数据库,出于测试目的,我希望将所有记录拉回来.我试图使用表单的URL ...

http://localhost:9200/foo/_search?pretty=true&q={'matchAll':{''}}
Run Code Online (Sandbox Code Playgroud)

有人可以给我你用来完成这个的URL吗?

database bigdata query-string elasticsearch elasticsearch-dsl

463
推荐指数
15
解决办法
58万
查看次数

Elasticsearch没有对结果进行排序

我遇到了弹性搜索查询的问题.我希望能够对结果进行排序,但elasticsearch忽略了排序标记.在这里我的查询:

{
    "sort": [{
        "title": {"order": "desc"}
    }],
    "query":{
        "term": { "title": "pagos" }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我删除查询部分并且我只发送排序标记时,它可以工作.任何人都能指出我正确的方法吗?

我也试过以下查询,这是我的完整查询:

{
  "sort": [{
    "title": {"order": "asc"}
  }],
  "query":{
    "bool":{
      "should":[
        {
          "match":{
            "title":{
              "query":"Pagos",
              "boost":9
            }
          }
        },
        {
          "match":{
            "description":{
              "query":"Pagos",
              "boost":5
            }
          }
        },
        {
          "match":{
            "keywords":{
              "query":"Pagos",
              "boost":3
            }
          }
        },
        {
          "match":{
            "owner":{
              "query":"Pagos",
              "boost":2
            }
          }
        }
      ]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

设置

{
  "settings": {
    "analysis": {
      "filter": {
        "autocomplete_filter": {
          "type": "ngram",
          "min_gram": 3,
          "max_gram": 15, …
Run Code Online (Sandbox Code Playgroud)

sorting elasticsearch elasticsearch-dsl elasticsearch-py

16
推荐指数
1
解决办法
9125
查看次数

使用python在elasticsearch-dsl中聚合一个字段

有人能告诉我如何编写Python语句来汇总(总结和计算)有关我文档的内容吗?


脚本

from datetime import datetime
from elasticsearch_dsl import DocType, String, Date, Integer
from elasticsearch_dsl.connections import connections

from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search, Q

# Define a default Elasticsearch client
client = connections.create_connection(hosts=['http://blahblahblah:9200'])

s = Search(using=client, index="attendance")
s = s.execute()

for tag in s.aggregations.per_tag.buckets:
    print (tag.key)
Run Code Online (Sandbox Code Playgroud)

OUTPUT

File "/Library/Python/2.7/site-packages/elasticsearch_dsl/utils.py", line 106, in __getattr__
'%r object has no attribute %r' % (self.__class__.__name__, attr_name))
AttributeError: 'Response' object has no attribute 'aggregations'
Run Code Online (Sandbox Code Playgroud)

是什么造成的?"聚合"关键字是错误的吗?我需要导入一些其他包吗?如果"出勤"索引中的文档有一个名为emailAddress的字段,我如何计算哪些文档具有该字段的值?

python elasticsearch elasticsearch-dsl

12
推荐指数
1
解决办法
2万
查看次数

使用 Query DSL 查询某个字段是否包含字符串

我正在尝试过滤 Kibana 以查找包含字符串“pH”的字段。该字段称为extra.monitor_value_name. 潜在值的示例有Temperature_ABC01DO_ABC01、 或pH_ABC01

Kibana 的 Elasticsearch Query DSL 似乎没有“包含字符串”,因此我需要自定义查询。

我是 Query DSL 的新手,您能帮我创建查询吗?

另外,将其称为 Query DSL 是否合适?我什至不确定措辞是否正确。

elasticsearch elasticsearch-dsl elastic-stack

12
推荐指数
2
解决办法
4万
查看次数

Elasticsearch:批量搜索可能吗?

我知道有批量索引操作的支持.但搜索查询是否也可以这样做?我想发送许多不同的无关查询(进行精确/召回测试),使用批量查询可能会更快

elasticsearch elasticsearch-dsl elasticsearch-query

10
推荐指数
1
解决办法
4743
查看次数

Python elasticsearch-dsl django分页

我如何在elasticsearch dsl上使用django分页.我的代码:

query = MultiMatch(query=q, fields=['title', 'body'], fuzziness='AUTO')

s = Search(using=elastic_client, index='post').query(query).sort('-created_at')
response = s.execute()

// this always returns page count 1
paginator = Paginator(response, 100)
page = request.GET.get('page')
try:
    posts = paginator.page(page)
except PageNotAnInteger:
    posts = paginator.page(1)
except EmptyPage:
    posts = paginator.page(paginator.num_pages)
Run Code Online (Sandbox Code Playgroud)

对此有何解决方案?

python django pagination elasticsearch-dsl

10
推荐指数
1
解决办法
2583
查看次数

Elasticsearch范围基于doc_count的桶聚合

我有一个像这样的弹性搜索聚合查询.

{
    "aggs": {
        "customer": {
            "aggs": {
                "Total_Sale": {
                    "sum": {
                        "field": "amount"
                    }
                }
            },
            "terms": {
                "field": "org",
                "size": 50000
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它会导致桶聚合,如下所示

{
    "aggregations": {
        "customer": {
            "buckets": [
                {
                    "Total_Sale": { "value": 9999 },
                    "doc_count": 8,
                    "key": "cats"
                },
                {
                    "Total_Sale": { "value": 8888 },
                    "doc_count": 6,
                    "key": "tigers"
                },
                {
                    "Total_Sale": { "value": 444},
                    "doc_count": 5,
                    "key": "lions"
                },
                {
                    "Total_Sale": { "value": 555 },
                    "doc_count": 2,
                    "key": "wolves"
                }
           ]
       } …
Run Code Online (Sandbox Code Playgroud)

elasticsearch elasticsearch-dsl

8
推荐指数
1
解决办法
1225
查看次数

如何获得多个精确匹配词组

以下是获取精确匹配的查询

GET courses/_search
{
  "query": {
    "term" : {
         "name.keyword": "Anthropology 230"
      }
  }
}
Run Code Online (Sandbox Code Playgroud)

我需要找到Anthropology 230Anthropology 250 also

如何获得精确匹配

dsl elasticsearch elasticsearch-dsl

8
推荐指数
1
解决办法
258
查看次数

更新到elasticsearch 2.3后无法找到嵌套的geopoint

我们使用AWS管理的Elasticsearch服务,最近从1.5升级到2.3.我们在python中使用elasticsearch-dsl包来构建我们的查询并设法迁移我们的大多数查询,但无论我尝试什么,geo_distance都会被破坏.

制图:

{
        'company': {
            'properties': {
                'id': {'type': 'integer'},
                'company_number': {'type': 'string'},
                'addresses': {
                    'type': 'nested',
                    'properties': {
                        'postcode': {'type': 'string', 'index': 'not_analyzed'},
                        'location': {'type': 'geo_point'}
                    }
                }
             }
        }
} 
Run Code Online (Sandbox Code Playgroud)

Python代码使用elasticsearch-dsl == 0.0.11

            test_location = '53.5411062377, -2.11485504709'
            test_distance = "3miles"
            location_filter = F("geo_distance", 
                                location=test_location,
                                distance=test_distance)
            query = query.filter("nested", 
                                 path="addresses",
                                 filter=location_filter)
Run Code Online (Sandbox Code Playgroud)

库生成的查询:

{'query': {'filtered': {'filter': {'nested': {'filter': {'geo_distance': {'distance': u'3miles', 'location': '53.5411062377, -2.11485504709'}}, 'path': 'addresses'}}, 'query': {'match_all': {}}}}}
Run Code Online (Sandbox Code Playgroud)

我们使用相同的映射在新的2.3上创建了一个全新的索引.

更新到elasticsearch-dsl == 2.1.0并尝试将过滤器转换为查询后:

geo_query = Q({"bool": {
                    "must": [
                        { …
Run Code Online (Sandbox Code Playgroud)

python elasticsearch elasticsearch-dsl

7
推荐指数
1
解决办法
399
查看次数

什么是Elasticsearch-py等同于别名操作?

我正在尝试使用elasticsearch-dsl实现多重索引方法.基本上有两个步骤:

1.创建别名:

PUT /tweets_1/_alias/tweets_search 
PUT /tweets_1/_alias/tweets_index 
Run Code Online (Sandbox Code Playgroud)

2.必要时更改别名:

POST /_aliases
{
  "actions": [
    { "add":    { "index": "tweets_2", "alias": "tweets_search" }}, 
    { "remove": { "index": "tweets_1", "alias": "tweets_index"  }}, 
    { "add":    { "index": "tweets_2", "alias": "tweets_index"  }}  
  ]
}
Run Code Online (Sandbox Code Playgroud)

我只能使用elasticsearch-py(而不是dsl)实现第1步:

from elasticsearch.client import IndicesClient
IndicesClient(client).("tweets_1", "tweets_search")
IndicesClient(client).("tweets_1", "tweets_index")
Run Code Online (Sandbox Code Playgroud)

我不知道如何为第2步做到这一点.那么,elasticsearch-dsl(或者至少在elasticsearch-py中)的等价物是什么?

python elasticsearch elasticsearch-dsl elasticsearch-py

7
推荐指数
1
解决办法
3169
查看次数